一、建立索引
要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引(order by desc会非常影响效率)。
二、避免在建立索引的字段进行计算操作。
三、使用预编译查询,用问号代替参数位置,防止sql注入攻击
四、调整where的连接顺序,因为DBMS是按照从下到上的顺序执行的。
五、使用union all 代替 union (Union因为要进行重复值扫描,所以效率低。如果合并没有刻意要删除重复行,那么就使用Union All),前提是如果确定检索结果中不会有重复的记录时候
六、使用 varchar/nvarchar 代替 char/nchar:
因为varchar是可变长度,char是固定长度
虽然效率上char要高,但是空间上会浪费,举个例子:
varchar(5),char(5)如果都赋值'abc',那么varchar只用了3个字符空间
而char用了3个后会自动拿空间填满,所以始终是会占用5个字符空间