百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> mysql中select和where子句优化的总结
分享文章到:

mysql中select和where子句优化的总结

发布时间:08/01 来源:未知 浏览: 关键词:
本篇文章给大家带来的内容是对于mysql中select和where子句优化的总结,有一定的参照 价值,有需要的伴侣可以参照 一下,但愿对你有所帮忙。 本篇文章给大家带来的内容是对于mysql中select和where子句优化的总结,有一定的参照 价值,有需要的伴侣可以参照 一下,但愿对你有所帮忙。

数据库优化:

1.可以在单个SQL语句,整个利用程序,单个数据库办事器或多个联网数据库办事器的级别进行优化
2.数据库机能取决于数据库级另外几个因素,例如表,查询和配置设定
3.在数据库级别进行优化,在硬件级别进行优化,均衡可移植性和机能
4.合适的构造,合适的数据类型;施行频繁更新的利用程序批量表(少列);剖析批量数据的利用程序少量表(多列);选中合适的存储引擎和索引;
5.紧缩适用于InnoDB表的各种工作负载,以及只读MyISAM表
6.选中合适的锁定战略;InnoDB存储引擎可以处置大多数锁定题目
7.配置的主要内存区域是InnoDB缓冲池和MyISAM密钥缓存。
8.优化select语句,这方面技巧一样适用于其他带where的delete语句等,在where子句的列上设定索引;索引关于援用多个列如join和外键尤为重要

select where子句优化:

1.调整查询的构造,例如函数调取,为效果集中的每一行只调取一次,为表中的每一行只调取一次
2.减少查询中的全表扫描数
3.按期运用ANALYZE TABLE语句使表统计信息维持最新
4.理解特定于每个表的存储引擎的调优技术,索引技术和配置参数
5.优化InnoDB表的单查询事务
6.通过浏览EXPLAIN规划并调整索引,WHERE子句,连贯子句等来观察特定查询的内部细致信息
7.调整MySQL用于缓存的内存区域的大小和属性。通过有效运用InnoDB缓冲池,MyISAM密钥缓存和MySQL查询缓存
8.where前提,去除无须要的括号,恒定折叠,恒定前提去掉,减少无须要的逻辑
9.被索引运用的常量表达式只盘算一次
10.count(*)直接从表信息中查询;当只要一张表时,not null表达式也是这样
11.要是不运用GROUP BY或聚合函数(COUNT(),MIN()等),HAVING将与WHERE合并
12.常量表,只要一行或空表;where子句作用在primary key或者unique索引上
13.要是ORDER BY和GROUP BY子句中的所有列都来自统一个表,则在连贯时首选该表
14.要是order by子句和group by子句不同,或来自不一样的表,则会新建暂时表
15.要是运用SQL_SMALL_RESULT润饰符,MySQL将运用内存中的暂时表
16.MySQL甚至无需征询数据文件即可只从索引中读取行
17.在输出每一行以前,将跳过与HAVING子句不匹配的行

下列表被用作常量表:

SELECT * FROM t WHERE primary_key=1;
SELECT * FROM t1,t2  
WHERE t1.primary_key=1 AND t2.primary_key=t1.id;

下列查询运转速度非常快:

SELECT COUNT(*) FROM tbl_name;
SELECT MIN(key_part1),MAX(key_part1) FROM tbl_name;
SELECT MAX(key_part2) FROM tbl_name
  WHERE key_part1=constant;
SELECT ... FROM tbl_name
  ORDER BY key_part1,key_part2,... LIMIT 10;
SELECT ... FROM tbl_name
  ORDER BY key_part1 DESC, key_part2 DESC, ... LIMIT 10;
假如索引列是数值型,下列查询仅用到了索引树:
SELECT key_part1,key_part2 FROM tbl_name WHERE key_part1=val;
SELECT COUNT(*) FROM tbl_name
  WHERE key_part1=val1 AND key_part2=val2;
  SELECT key_part2 FROM tbl_name GROUP BY key_part1;

下列查询运用索引按排序次序取回数据,不需要独自排序

SELECT ... FROM tbl_name
  ORDER BY key_part1,key_part2,... ;
SELECT ... FROM tbl_name
   ORDER BY key_part1 DESC, key_part2 DESC, ... ;

以上就是mysql中select和where子句优化的总结的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有155人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板