为什么建立索引后查询速度反而变慢了

coreykou2018 2006-06-14 04:33:53
主键表:Tp
外键表:Tf1,Tf2,Tf3

select tf1.* from tf1 inner join tp on tp.pk = tf1.fk
select tf2.* from tf2 inner join tp on tp.pk = tf2.fk
select tf3.* from tf3 inner join tp on tp.pk = tf3.fk

都是大数据量,于是为了提高查询性能,在Tf1,Tf2,Tf3分别以外键建立索引,结果查询这三个表时确实快了,但是 在查询Tp时慢了许多,请教大虾这是为什么,如何解决?
...全文
1107 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
li_zero 2006-06-26
  • 打赏
  • 举报
回复
没有where条件,怎么用得上索引呢
alone1998 2006-06-24
  • 打赏
  • 举报
回复
当返回的结果较多时,非聚集索引效率可能比全表扫描还要低。因为非聚集索引必定会引发mark lookup操作。性能优化不可能做到每个字段的查询都能优化到最快,必须根据访问模式有针对的优化
suntt 2006-06-24
  • 打赏
  • 举报
回复
只要没有where条件,若进行了全表的扫描,往往非聚集索引是无法用上的,因此要慢一些。
wangdehao 2006-06-23
  • 打赏
  • 举报
回复
kouyujie(小宝) ( ) 信誉:100 2006-6-23 1:21:47 得分: 0



我是在Tp上建立了非聚集索引,使用的查询语句是Select *



---------------------------
where 条件呢?
suntt 2006-06-23
  • 打赏
  • 举报
回复
你在“查询分析器”运行后,按ctrl+k,执行查询后,看看查询tp时,使用的索引情况。
还有,你将tp上查询的语句给出。
coreykou2018 2006-06-23
  • 打赏
  • 举报
回复
我是在Tp上建立了非聚集索引,使用的查询语句是Select *
yown 2006-06-21
  • 打赏
  • 举报
回复
不会,你怎样查询Tp的?
昵称被占用了 2006-06-21
  • 打赏
  • 举报
回复
没理由的
你的测试没问题?
wangdehao 2006-06-21
  • 打赏
  • 举报
回复
,结果查询这三个表时确实快了,但是 在查询Tp时慢了许多,请教大虾这是为什么,如何解决?

------------------------------
到底是怎么查询快了,怎么查询慢了?楼主能说明白点吗?
suntt 2006-06-21
  • 打赏
  • 举报
回复
你的索引是聚集的还是非聚集的??
suntt 2006-06-21
  • 打赏
  • 举报
回复
若是索引是非聚集的,那当你全表扫描时速度会很慢
vovo2000 2006-06-21
  • 打赏
  • 举报
回复
你的查询语句是什么样的阿,有没有合理利用索引阿
撸大湿 2006-06-14
  • 打赏
  • 举报
回复
楼主把表结构和索引DDL帖出来看看
撸大湿 2006-06-14
  • 打赏
  • 举报
回复
有得必有失


注意查询条件顺序一定要按照索引顺序

可以针对表建立索引多个索引,以满足不同查询条件

每个表的索引最好不要超过5个


楼主把表结构和索引DDL帖出来看看

suntt 2006-06-14
  • 打赏
  • 举报
回复

察看执行计划看看系统是如何利用索引的

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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