旗下导航:搜·么
当前位置:网站首页 > MySQL教程 > 正文

mysql中select和where子句优化的总结【MySQL教程】,mysql

作者:搜教程发布时间:2019-12-01分类:MySQL教程浏览:55评论:0


导读:本篇文章给人人带来的内容是关于mysql中select和where子句优化的总结,有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。数据库优化:1.能够...
本篇文章给人人带来的内容是关于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子句优化的总结的细致内容,更多请关注ki4网别的相干文章!

标签:mysql


欢迎 发表评论: