时间:2021-07-01 10:21:17 帮助过:28人阅读
一,数据库设计角度
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查询优化
标签:设计 临时表 导致 tween 数据库 字段 全表扫描 数字 arch