请教一下关于索引的问题,在线等。

bccu 2011-02-24 03:34:45
select top 10 col1,col2,col3 from table1 where col1='1000'

select top 10 col1,col2,col3 from table1 where col1='1200'

两条同样的语句,只是条件不一样,根据条件产生的数据量不一样,
但是性能却有很大的差异,我有一针对col1的索引,但是一条语句
使用索引了,另一条却不使用,导致很慢
(根据条件产生的数据量大的明显慢很多,索引无效)。

请教是什么原因,如何处理?
...全文
108 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2011-02-24
  • 打赏
  • 举报
回复
看执行计划
华夏小卒 2011-02-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 bccu 的回复:]
引用 6 楼 js_szy 的回复:

引用 4 楼 xuam 的回复:
10W条数据里只有几条col1='1000' 的数据,索引基本没什么优势,相反要是有几W条,那索引效果明显!
这个是不是说反了?

是反了,我的问题就是根据条件查出数据多的话,就很慢,并且不走索引了。
[/Quote]

数据如果很多的话,比如100W记录,条件1出来90W,这个执行索引跟执行表扫描基本没差别了。我是这样认为的
打一壶酱油 2011-02-24
  • 打赏
  • 举报
回复

with 强制执行计划?一般不推荐的
bccu 2011-02-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 js_szy 的回复:]

引用 4 楼 xuam 的回复:
10W条数据里只有几条col1='1000' 的数据,索引基本没什么优势,相反要是有几W条,那索引效果明显!
这个是不是说反了?
[/Quote]
是反了,我的问题就是根据条件查出数据多的话,就很慢,并且不走索引了。
华夏小卒 2011-02-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xuam 的回复:]
10W条数据里只有几条col1='1000' 的数据,索引基本没什么优势,相反要是有几W条,那索引效果明显!
[/Quote]这个是不是说反了?

bccu 2011-02-24
  • 打赏
  • 举报
回复
是col1='1000'的数据量与col='1200'相差太大,那怎么处理呢。
xuam 2011-02-24
  • 打赏
  • 举报
回复
10W条数据里只有几条col1='1000' 的数据,索引基本没什么优势,相反要是有几W条,那索引效果明显!
AcHerat 元老 2011-02-24
  • 打赏
  • 举报
回复
select count(*) from table1 where col1='1000'

select count(*) from table1 where col1='1200'

看看。
活在岸上的魚 2011-02-24
  • 打赏
  • 举报
回复
不是索引无效,可能是col1='1000'的数据量与col='1200'相差太大了,SQL语句执行起来也是有顺序的
先查询到相等条件的数据,然后再取前10行数据
bccu 2011-02-24
  • 打赏
  • 举报
回复
没人指导?

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧