1、查询单条数据使用 limit 1,当查询到有一条数据的时候会停止继续扫描,某些情况下可以有效提高查询效率
2、避免使用select *,应该需要什么拿什么(题外话:曾经遇到过表只有几十条数据,其中一个text类型的字段内容超长,导致sql极慢)
3、表字段不要默认null值,应该设置not null,int可以设置默认为0。sql语句中 is null 到导致扫描全表,包含null值的列不能建立索引
3、!= 和<>操作符对索引无效,会导致全表扫描
4、in 和 not in对索引无效,导致全表扫描,应该使用exists代替
5、有 or的时候,or的两边只要有一个字段没有索引也会导致全表扫描
6、like '%abc%' 会导致全表扫描,like 'abc%' 对索引有效
7、尽量不要对字段进行表达式或函数操作,num/2 = 100 和 LEFT(str, 1) = 'abc' 对索引无效,会导致扫描全表
8、为abc建立复合索引,那个 where条件是 a=1 and b=3 and c=3, 效率会很高并且比单索引要快,但是如果c=1 and b=2 and a=3, 将导致索引无效扫描全表
9、索引可以提高select的效率,但是会降低insert和update的效率,因为每次更新插入数据都会
10、数字类型比字符串效率更高,数字类型只对比一次,字符串会逐个对比
11、varchar/nvarchar 比 char/nchar 消耗的内存更小,查询速度会更快