免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4215 | 回复: 13
打印 上一主题 下一主题

求助:为什么在SQL查询中临时表的索引没有用到??? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-11 10:43 |只看该作者 |倒序浏览
求助:为什么我在SQL查询中的临时表的索引没有用到???
例如:
select a,b,c,d into #a from mm
create index idx_a on #a(a)

select a.* from #a a,bb b
where a.a = b.a

通过查询分析器发现,临时表#a的索引根本就没有用到,用强制索引也是一样,而单步执行确用到索引,请问各位大虾这是怎么回事,难道是Sybase的查询计划有问题

论坛徽章:
0
2 [报告]
发表于 2006-01-11 14:49 |只看该作者
查询是否使用索引由数据库自身决定。

论坛徽章:
0
3 [报告]
发表于 2006-01-11 14:53 |只看该作者
是否用索引应该数据库也有控制的吧?

论坛徽章:
0
4 [报告]
发表于 2006-01-11 20:56 |只看该作者

试一下

select a,b,c,d into tempdb..a from mm
go
create index idx_a on tempdb..a(a)
go
select a.* from temp.a a,tempdb.a  b
where a.a = b.a
go

论坛徽章:
0
5 [报告]
发表于 2006-01-12 10:20 |只看该作者
谢谢楼上。但想问如果多人进行这个查询,不就会抱错吗?这就是所谓的在tempdb库建真实表嘛。

论坛徽章:
0
6 [报告]
发表于 2006-01-12 10:39 |只看该作者
是不是楼上漏了#a,如果改为tempdb..#a应该可以。

论坛徽章:
0
7 [报告]
发表于 2006-01-12 10:51 |只看该作者
SYBASE要知道你索引的统计信息才可正确使用查询计划。

论坛徽章:
0
8 [报告]
发表于 2006-01-12 11:01 |只看该作者
那SYBASE要怎样知道索引的统计信息?

论坛徽章:
0
9 [报告]
发表于 2006-01-12 14:57 |只看该作者

关于tempdb..a

六楼:是不是楼上漏了#a,如果改为tempdb..#a应该可以。

是tempdb..a,不是temp..#a.
在tempdb中建表,表名后面SYBASE会自动加上一串东西,如表a ,数据库中真正名可能为:
aHUR090008345...或其它东西。
不同的执行生成的表名不同,不会混在一起。
tempdb..name要自己清理(重启时会自动清理)

论坛徽章:
0
10 [报告]
发表于 2006-01-12 21:56 |只看该作者
原帖由 leno_mx 于 2006-1-12 11:01 发表
那SYBASE要怎样知道索引的统计信息?


我想知道你是怎么运行这些脚本,请贴出执行过程及showplan on\noexec on 信息.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP