- 浏览: 1270766 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (608)
- 数据结构 (2)
- AJAX (3)
- 设计模式 (3)
- java (117)
- js (14)
- css (9)
- jsp (10)
- 杂文 (49)
- htmlparser (6)
- 数据库 (29)
- 算法 (14)
- 数据挖掘 (11)
- 电脑杂症 (12)
- 网络爬虫 (7)
- 应用服务器 (9)
- PHP (2)
- C# (14)
- 测试 (3)
- WEB高性能开发 (3)
- swt (1)
- 搜索引擎 (16)
- HttpClient (4)
- Lite (1)
- EXT (1)
- python (1)
- lucene (4)
- sphinx (9)
- Xapian (0)
- linux (44)
- 问题归类 (1)
- Android (6)
- ubuntu (7)
- SEO (18)
- 数学 (0)
- 农业资讯 (12)
- 游戏 (3)
- nginx (1)
- TeamViewer (1)
- swing (1)
- Web前 端 (1)
- 主页 (0)
- 阿萨德发首发身份 (0)
- 软件设计师 (0)
- hibernate (5)
- spring3.0 (5)
- elastic (1)
- SSH (3)
- ff (0)
- oracle 10g (9)
- 神经网络 (1)
- struts2.0 (2)
- maven (1)
- nexus (1)
- 辅助工具 (3)
- Shiro (1)
- 联通项目 (0)
- 2014年专业选择 (0)
- freemarker (1)
- struts1.2 (8)
- adfasdfasfasf (0)
- TortoiseSVN (1)
- jstl (1)
- jquery (1)
- eclipse plugin (0)
- 游戏外挂 (1)
- 推广 (0)
- 按键精灵 (1)
- ibatis3.0 (1)
最新评论
-
水野哲也:
不不不, 这个您真错了!其实是你引用的那个jsp和本身的jsp ...
解析关于jsp页面指令冲突问题contentType="text/html;charset=UTF-8" -
caobo_cb:
import xx.cn.weibo.Util;
[ java版]新浪微博之ruquest_token篇 -
caobo_cb:
你好 Util包没有
[ java版]新浪微博之ruquest_token篇 -
小桔子:
你好!我遇到个问题 max_allowed_packet值总是 ...
mysql查询占用内存,优化的技巧 -
donghustone:
谢谢大神!
用JSmooth制作java jar文件的可执行exe文件教程(图文)
MYSQL描述:
一个文章库,里面有两个表:category和article。category里面有10条分类数据。article里面有20万条。article里面有一个”article_category”字段是与category里的”category_id”字段相对应的。article表里面已经把 article_category字义为了索引。数据库大小为1.3G。
问题描述:
执行一个很普通的查询:
解决方案:
建一个索引:
继续问题:
使用OR:
执行时间:11.0777
解决方案:避免使用in 或者 or (or会导致扫表),使用union all
使用UNION ALL:
执行时间:0.0261
一个文章库,里面有两个表:category和article。category里面有10条分类数据。article里面有20万条。article里面有一个”article_category”字段是与category里的”category_id”字段相对应的。article表里面已经把 article_category字义为了索引。数据库大小为1.3G。
问题描述:
执行一个很普通的查询:
SELECT * FROM `article` WHERE article_category=11 ORDER BY article_id DESC LIMIT 5 。执行时间大约要5秒左右
解决方案:
建一个索引:
create index idx_u on article (article_category,article_id); SELECT * FROM `article` WHERE article_category=11 ORDER BY article_id DESC LIMIT 5减少到0.0027秒
继续问题:
SELECT * FROM `article` WHERE article_category IN (2,3) ORDER BY article_id DESC LIMIT 5执行时间要11.2850秒。
使用OR:
select * from article where article_category=2 or article_category=3 order by article_id desc limit 5
执行时间:11.0777
解决方案:避免使用in 或者 or (or会导致扫表),使用union all
使用UNION ALL:
(select * from article where article_category=2 order by article_id desc limit 5) UNION ALL (select * from article where article_category=3 order by article_id desc limit 5) ORDER BY article_id desc limit 5
执行时间:0.0261
发表评论
-
数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问
2012-09-07 12:12 3087数据导入报错:Got a packet bigger than ... -
mysql 创建 数据库时指定编码
2012-09-03 17:17 831mysql 创建 数据库时指定编码很重要,很多开发者都使用了默 ... -
mysql MERGE 错误(differently defined or of non-MyISAM type)
2012-02-15 11:35 5594错误代码: Error Code : 1168 Unable ... -
mongodb
2012-01-23 12:41 2057mongodb 操作记录 mongod --dbpath & ... -
MongoDB2.0.1 出现严重数据丢失问题
2011-12-15 14:05 1719再插入1000W的数据,既然丢失100W多数据。太夸张了吧。 ... -
SQL注入攻击的种类和防范手段
2011-12-03 10:34 1255观察近来的一些安全事件及其后果,安全专家们已经得到一个结论,这 ... -
mysql分表的3种方法
2011-10-21 10:11 853一,先说一下为什么要 ... -
mysql explain 知识一
2011-10-19 14:54 1278前记:很多东西看似简 ... -
libmysqlclient.la
2011-07-17 21:15 1404collect2: ld returned 1 exit st ... -
mysql备份
2011-07-09 02:43 1077备份MySQL数据库的命令 mysqldump -hhost ... -
Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLIC
2011-06-06 17:08 1655今天,在写触发器的时候,添加了一个更新语句,实在想不通。把更新 ... -
mysql explain 笔记整理
2011-06-04 10:16 990explain是用来分析sql语句,帮助优化的一个命令。 e ... -
MySQL: ERROR 13 (HY000): Can't get stat of
2011-04-11 19:42 3203但是将LOAD DATA INFILE 换成 LOAD D ... -
mysql查询占用内存,优化的技巧
2011-01-20 15:18 10912在Apache, PHP, MySQL的体系 ... -
linux mysql 启动失败(Can't create/write to can't create PID file: >Permission denied
2011-01-07 10:42 9869>071117 20:53:26 mysqld st ... -
MySQL触发器更新本表数据异常:Can't update table 'tbl' in stored function/trigger because it
2011-01-07 10:17 7631如果你在触发器里面对刚刚插入的数据进行了 insert/upd ... -
MYSQL 学习参考资料
2011-01-05 23:19 746http://dev.mysql.com/doc/refman ... -
mysql 定时执行
2010-10-15 13:44 1167首先,这个功能只能在5.1.X之上才能用 CREATE T ... -
安装、重装时出现could not start the service mysql error:0的错误或者start service停止不动时
2010-04-02 00:43 3773关于XP安装mysql-5.1.45-win3 ... -
mysql集群
2009-08-18 18:53 1242相关文章: mysql clus ...
相关推荐
在MySQL数据库中,进行数据查询时,我们经常需要使用到`OR`、`IN`和`UNION ALL`这些操作符。这些操作符在不同的场景下有不同的效率表现,但并不是像网络上普遍认为的那样,`UNION ALL`总是比`OR`和`IN`更快。实际上...
本文将基于一个具体的业务场景来探讨在MySQL中使用`union all`、`in`、`or`以及负向查询(如`!=`)时如何有效地利用索引。 #### 一、`union all`肯定能命中索引 假设有一个名为`order`的订单业务表,其结构如下: ...
当然,这并不意味着在所有情况下都应避免使用`UNION ALL`,在某些复杂查询或数据聚合场景中,`UNION ALL`仍有其独特的优势。在实际应用中,应结合具体需求和系统性能,灵活选择适合的处理方式。
总结以上内容,本文主要讲述了MySQL中UNION ALL用法的基本概念、在不同版本的MySQL中UNION ALL的性能差异,以及如何通过理解执行计划来优化数据库操作。此外,还提到了与MariaDB的对比以及OCR扫描技术可能带来的问题...
在MySQL数据库中,索引优化是提升查询性能的关键。本文主要探讨了`OR`、`IN`、`UNION`操作符以及它们如何与索引交互,以...对于复杂查询,尤其是涉及子查询和多个条件的组合,要特别注意索引的使用和可能的性能瓶颈。
如果查询中的列和索引的类型不完全匹配,如整数和字符串的比较,MySQL可能无法使用索引。确保数据类型的一致性很重要。 **9. GROUP BY和ORDER BY** 在使用GROUP BY和ORDER BY时,如果未指定的所有列都在索引中,且...
4. **使用`UNION`替代`OR`**:有时,将`OR`语句重构为多个`UNION`或`UNION ALL`子查询可能更高效。每个子查询可以独立利用其条件对应的索引。 5. **避免`NULL`值**:索引对`NULL`值的处理方式特殊,`NULL`值不会被...
- **KEY_LEN**:表示索引中使用的字节数,可用于计算查询中使用的索引的长度。 - **REF**:显示使用的参考列或常量。 - **ROWS**:估计被查询的行数。 - **EXTRA**:包含无法在其他列中显示的附加信息。 #### 二、...
可以尝试使用`UNION ALL`或重构查询来避免这个问题。 8. **类型不匹配**:如果查询中的列与索引列的数据类型不匹配,如字符串和整数之间的比较,索引可能不会被使用。 9. **NULL值处理**:索引通常不包含`NULL`值...
本文将从EXPLAIN命令、SQL语句优化、索引的使用、排序和限制、union和union all的差异、ORDER BY RAND()的优化、in和exists的区分、分页方式的优化、分段查询等角度来讨论MySQL优化策略。 一、EXPLAIN命令的使用 ...
此外,避免在`WHERE`子句中使用`LIKE`操作符或非索引字段,这可能导致全表扫描,降低查询效率。 总结起来,`LEFT JOIN UNION ALL`的组合使用在处理多表数据时提供了极大的灵活性,尤其在需要根据用户需求动态获取和...
MySQL索引的工作机制基于B树及其变种B+树的数据结构,以协助快速查询和更新。 基础操作命令中,可以使用特定的命令来检查MySQL是否运行中,如在Debian系统中使用service mysql status,在RedHat系统中使用service ...
MySQL索引是数据库管理系统中用于加速数据检索的一种数据结构,它可以显著提高查询性能。本篇文章主要探讨了在MySQL中如何有效使用索引以及在特定情况下优化查询的方法。 首先,我们来看一个实例,其中包含两个表:...
- **使用索引提示**:在查询中使用`FORCE INDEX`或`USE INDEX`来指定应使用的索引,但需谨慎,因为这可能会阻止优化器选择最佳的索引。 监控和分析MySQL索引使用率可以帮助识别性能瓶颈,进而优化查询,提升数据库...
推荐避免让字段允许`NULL`值,设置为`NOT NULL`并提供默认值,以简化索引的使用和优化。 4. **函数操作**: 使用函数如`DATE_ADD`、`CAST`等直接作用于索引列会导致索引失效,因为MySQL无法直接使用索引进行查找。...
- 子查询与组合查询:在WHERE子句中使用子查询,或者使用UNION和UNION ALL进行多个SELECT语句结果的合并。 2. 表操作: - 表的创建:使用CREATE TABLE语句创建新的表,可以定义表结构,包括字段名称、数据类型和...