MYSQL_调优


MySQL_调优

创建索引

  1. 尽量避免全表扫描,在 Where 和 Order By 涉及到的列上建立索引。
  2. 在经常使用的字段上建立索引。
  3. 索引中不要包含有 null 值的列。

避免在索引上使用计算

原因:

如果索引是计算的一部分,那么查询将不会使用索引,而是全表扫描。

程序中尽量使用参数化的SQL语句

原因:

  1. 避免 SQL 注入漏洞攻击。
  2. 数据库在第一次会对参数化的 SQL 进行预编译,这样以后在执行这条 SQL 的时候会直接使用预编译的结果,从而大大提高执行速度。

用 Where 关键字替换 Having

原因:

Having 会检索出所有的结果之后才对结果集进行过滤,而 Where 则是在聚合前筛选。

使用表的别名

原因:

多个表进行链接时,使用表的别名,可以减少解析时间。

用 Union All 替换 Union

原因:

使用 Union 关键字进行聚合,即使结果集中不存在重复的记录,也会再次进行合并,然后输出结果排序。

查询 Select 语句优化

  1. 不要使用 select * from ,用具体的字段代替 * 。
  2. 避免在 Where 子句中进行 null 值判断,因为这将导致数据库放弃使用索引而进行全表扫描。
  3. 如果必须使用 like 语句,请使用 like “aaa%” (会使用索引)样式,因为 like “%aaa%” 样式的不会使用索引。
  4. 不要在列上进行计算,列上进行计算,不会使用索引。
  5. 不要使用 Not In 和 <> 。因为这两个关键字都不会使用索引。可以使用 Not Exists 和 (a > 1 or a < 1)替换。

文章作者: L Q
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 L Q !
  目录