Sql查询优化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sql查询优化相关的知识,希望对你有一定的参考价值。

一,数据库设计角度

  1.尽量避免全表查询,首先考虑在where一级order by的列上建立索引。

  2.尽量避免在where的子句中进行null判断,导致引擎放弃索引进行全表扫描。列如:select id from t where num is null;可以在num设置为0,确保不会出现null

  3.并不是所有索引对查询都有效,如果字段中含有大量重复数据,sql会对查询进行优化,不会使用索引

  4.索引会提高select效率,但是会降低insert和update,因为要建立索引,所以一个表中索引最好不要超过6个

  5.避免更新索引数据列

  6.尽量使用数字型字段

  7.使用varchar/nvarchar代替char/uchar

  8.尽量使用表变量代替临时表

  9.避免频繁创建和删除临时表

二Sql方面

  1.尽量避免在where子句中使用!= ,<与>,会导致引擎放弃索引进行全表扫描

  2.尽量避免在where子句中使用or会导致引擎放弃索引进行全表扫描

    select id from t where id = 1 or id = 2可以使用select id from t where id union all select id from t where id = 2

  3.in 与 not in也要慎用会导致全表扫描,对于连续的数值可以使用between

    select id from where id in (1,2,3)可以使用select id from where id between 1 and 3

以上是关于Sql查询优化的主要内容,如果未能解决你的问题,请参考以下文章

数据库牛人是如何进行SQL优化的?

SQL多个表联合查询优化的问题

DBA的五款最佳SQL查询优化工具

优化SQL查询:如何写出高性能SQL语句

SQL优化----百万数据查询优化

一文终结SQL 子查询优化