mssql like的效率
====================================
mssql like的效率
今天研究了一天,关于like的效率,使用效果如下:第一种情况为:
执行:select * from question where title like '?%'
结果如下:
(8 行受影响)
表 'Question'。扫描计数 1,逻辑读取 259 次,物理读取 0 次,预读 0 次,lob 逻辑读取 18 次,lob 物理读取 0 次,lob 预读 0 次。
第二种情况为:select * from question where title like '%?%'
结果如下:
(2280 行受影响)
表 'Question'。扫描计数 1,逻辑读取 259 次,物理读取 0 次,预读 0 次,lob 逻辑读取 5885 次,lob 物理读取 0 次,lob 预读 0 次。
第三种情况为:select * from question where charindex(title,'?%')>0
执行结果如下:
(3 行受影响)
表 'Question'。扫描计数 1,逻辑读取 259 次,物理读取 0 次,预读 0 次,lob 逻辑读取 7 次,lob 物理读取 0 次,lob 预读 0 次。
从中看出%%进行了全表扫描,而%还不错,但是如果使用charindex替代情能有很大的提升,但是对备注类型不可操作
==========================================
mssql优化
1、建立索引,建立索引很关键,索引分为二种,分别为聚焦索引和非聚焦索引;不过索引的维护开销代价也很大,最好为唯一并且不能修改;如果有重复的项,索引的效果很差
2、尽量减少使用视图,不过视图能减少代码的重复量
3、减少选择范围
===========================================