代码:要注重用户体验(安全性,效率高,嵌套少,可读性高:SQL语句效率要高)
SQL语句效率:index的使用
1)index:clustered index(聚合索引),non- clustered index(非聚合索引),unique index(唯一性索引)
2)clustered index :通常为主键,在SQL Server中主键默认是聚合索引(从数据结构的层面讲,表是线性表,聚合索引的逻辑结构决定表数据的物理顺序),因此聚合索引也是唯一的。
3)constraint(约束)Primary Key , foreign Key 。主键的创建必须依赖聚合索引
以下原因会导致数据库放弃索引,进行全表扫描
1:在where子句中使用 != ,<>(不等于)
2:在where子句中进行null值的判断
3:or 连接条件,所以可以的话,尽量使用Union和union all
4:前置的‘%’,所以在like子句中不要使用前置的‘%’
5:最好使用between and ,in 与on in 也用可能导致全表扫描
6:where 子句中使用参数会导致全表扫描(使用select id from t with (index (index name))) where num = @num强制使用索引)
7:在where子句中要避免对字段进行表达式和函数操作
8:where 子句‘=’的左边进行函数和表达式运算
9:复合索引在使用时,必须字段顺序与索引顺序一致