sql误区

1、 表上不管用得着用不着,都加个聚集索引。
表以两种方式组织物理存储:有聚集索引的“聚集表”;没有聚集索引的“堆”。在聚集表中,数据行按照聚集索引的顺序存储
(这也是为啥一张表最多只能有一个聚集索引的原因);堆中,数据行的存储可以认为是不确定的。

2、 primary key就是聚集索引。
3、 Log类的表,有事没事加个自增的Id列。
4、 是个表就给加个primary key约束
5、 在where条件里对同一个表中的列做运算或比较,以为创建某种类型的索引可以提高效率。
(这种情况下,任何索引都无法提升性能。解决办法见偶前面的“写有效率的sql查询”)

6、 在表上创建了col1、col2顺序的涵盖索引(聚集的或非聚集的),但是where条件里就一个col2 > XXX。
这种情况下,就不如分别在col1、col2上创建索引。


7、 存储过程中使用局部变量而不使用参数变量(就是存储过程输入参数)做where条件
存储过程中,能不使用本地变量就不使用,尽可能的使用参数变量(也就是输入参数)。如果不得不使用本地变量,
那也得只用在分布密度足够小的索引上使用。

8、 查询条件中类型不匹配
写查询条件时,应该尽可能的使类型匹配。使用诸如SqlCommand执行DB指令时,一定要让输入参数从类型到长度严格匹配相应的列。
尽管DB端不是所有的隐式转换都会引起性能损耗。

9、拼SQL。拼SQL要浪费大量的cpu进行编译,浪费大量缓存空间来存储只用一次的查询计划。

10、参数化SQL,和存储过程基本一样,只要是相同的查询,也都是只编译一次,以后重用(当然,指定了option(recompile)的除外)。
指定参数的长度。

11、存储过程,伊只编译一遍(如果没有指定with recompile选项的话,如果指定了,根本就不会生成计划缓存)。建议
DB中的所有操作都尽可能的使用存储过程,哪怕只是一句简单的select。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值