Query Profiler是MYSQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的性能瓶颈在什么地方。通常我们是使用的explain,以及slow query log都无法做到精确分析,但是Query Profiler却可以定位出一条SQL语句执行的各种资源消耗情况,比如CP...
分类:
数据库 时间:
2015-09-07 12:46:28
阅读次数:
239
概念如果索引包含所有满足查询需要的数据的索引成为覆盖索引(Covering Index),也就是平时所说的不需要回表操作判断标准使用explain,可以通过输出的extra列来判断,对于一个索引覆盖查询,显示为using index,MySQL查询优化器在执行查询前会决定是否有索引覆盖查询注意1、覆...
分类:
数据库 时间:
2015-09-02 00:00:50
阅读次数:
477
MySQL查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行。 你的最终目标是提交SELECT语句查找数据行,而不是排除数据行。优化器试图排除数据行的原因在于它排除数据行的速度越快,那么找到与条件匹配的数据行也就越快。 如何 更好的 利用...
分类:
数据库 时间:
2015-08-21 21:13:20
阅读次数:
177
建立索引的几大原则
最左前缀匹配原则,mysql会一直向右匹配直到遇到范围查询(>、,比如a = 1 and
b = 2 and c > 3 and d = 4 ,如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整(参考原则2)。但是mysql查询优化器可能通过优化调整顺序从而使用索引,但是写sql语...
分类:
数据库 时间:
2015-08-05 18:25:12
阅读次数:
193
MySQL的万能"嵌套循环"并不是对每种查询都是最优的。不过还好,mysql查询优化器只对少部分查询不适用,而且我们往往可以通过改写查询让mysql高效的完成工作。在这我们先来看看mysql优化器有哪些局限性: 1.关联子查询 mysql的子查询实现得非常糟糕。最糟糕得一类查询是...
分类:
数据库 时间:
2015-08-04 19:01:32
阅读次数:
173
显示插入查询的优化参数:
show variables like "concurrent_insert";
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| concurrent_insert | AUTO |
+-------------------+---...
分类:
数据库 时间:
2015-08-01 17:27:30
阅读次数:
236
1、使用索引查询记录时,一定要注意索引的使用情况,例如:
(1)like关键字配置的字符串不能以‘%’开头
(2)使用多列索引时,查询条件必须要使用这个索引的第一个字段
(3)使用or关键字时,or关键字连接的所有条件都必须使用索引
2.优化子查询
很多查询中需要使用子查询,但子查询执行效率不高,子查询时,mysql需要为内层查询语句的查询结果建立一个临时表,然后外层查询语句再在...
分类:
数据库 时间:
2015-07-22 22:41:58
阅读次数:
181
介绍了MYSQL查询过程,MYSQL查询优化器所做的优化和限制,总结了如何写出高效的查询语句。
分类:
数据库 时间:
2015-06-13 21:37:15
阅读次数:
217
1.利用EXPLAIN 语句,查看是否用到索引:EXPLAIN SELECT * FROM tb1_name WHERE 1= 02.下面的WHERE 子句说明了怎样进行这项工作。第一行中,优化程序将简化表达式4/2 为值2,然后使用my_col 上的索引快速地找到小于2 的值。而在第二个表达式中,...
分类:
数据库 时间:
2015-06-11 19:05:49
阅读次数:
139
数据库的查询优化有很多事情可以做。下面总结了一些:
基本原则:
减少数据库查询时发生的磁盘I/O数
合理利用索引避免全表遍历、扫描
减少网络传输数据量
只查询需要的字段
如果同时有Group By和Join,尽量先Group By后再Join避免在where语句中使用MySQL函数使用locate(substr, str)代替 like ...
分类:
数据库 时间:
2015-05-29 23:15:46
阅读次数:
245