
关于MSSQL查询效率以及索引的问题
表A,有字段aa,s几万条记录需要执行这条SQL,然后把符合的记录逐一读取select*from[A]whereaalike"%b%"oraalike"%cc%"oraa...
表A,有字段aa,s 几万条记录
需要执行这条SQL,然后把符合的记录逐一读取
select * from [A] where aa like "%b%" or aa like "%cc%" or aa like "%dd%" or.....or aa like "%xx%" and s >50 and s<100
问题:
①但是听说like的效率很低,如果这的用这条SQL,是不是会非常慢?
②如果换成索引,效率会提高多少
③换成索引的话,该怎样操作,使用?
④逐条读取符合的记录(预计几千条)需要多久,是不是会很慢
PS:MSSQL我基本不太懂..所以麻烦详细点
PS2:我是用ASP+MSSQL的 展开
需要执行这条SQL,然后把符合的记录逐一读取
select * from [A] where aa like "%b%" or aa like "%cc%" or aa like "%dd%" or.....or aa like "%xx%" and s >50 and s<100
问题:
①但是听说like的效率很低,如果这的用这条SQL,是不是会非常慢?
②如果换成索引,效率会提高多少
③换成索引的话,该怎样操作,使用?
④逐条读取符合的记录(预计几千条)需要多久,是不是会很慢
PS:MSSQL我基本不太懂..所以麻烦详细点
PS2:我是用ASP+MSSQL的 展开
展开全部
在MSSQL中,
1. field like 'str%' 可以用上索引,但 field like '%str%'无法利用索引
2. or条件组合无法利用索引
3. 几万条记录的遍历过程,SQL Server不会太尴尬
1. field like 'str%' 可以用上索引,但 field like '%str%'无法利用索引
2. or条件组合无法利用索引
3. 几万条记录的遍历过程,SQL Server不会太尴尬
追问
就是说,要达到我要的这种查询效果,没有其他更好的方法吗?建立索引也用处不大吗?
追答
若日常所用的都是这样的查询条件,就不必为aa字段建索引了,可以考虑为s字段加索引
展开全部
你的like文前后都有%号,所以即使加了索引也不会用到
这样的写法只会table scan,效率不高,建议另外想办法比较好
这样的写法只会table scan,效率不高,建议另外想办法比较好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
除了那些LONG或LONG RAW数据类型, 你可以索引几乎所有的列. 在大型表中使用索引特别有效. 3:虽然使用索引能得到查询效率的提高,但是我们也必须注意到它的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询