关于多表union all查询执行效率问题???

bullion 2008-04-22 03:42:14
现在有两个表(结构相同) T1 和 T2, 两个表都有20几万条记录, 中间有一个关联字段 pid

目前执行查询sql:
select t.* from (
select * from T1 where pid = 2
union all
select * from T2 where pid = 2
) t

但发现查询速度很慢, 各位有没有好的办法提高查询效率
...全文
545 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Limpire 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dawugui 的回复:]
引用 8 楼 jinjazz 的回复:
〉〉20多万的表估计在一分钟之内查询出.

我觉得10秒钟都用不了

如果是高档服务器,5S都要不了.
[/Quote]

<=1S
hello_zhenyu 2008-04-22
  • 打赏
  • 举报
回复
pid加上索引,或者直接写括号中的
dawugui 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jinjazz 的回复:]
〉〉20多万的表估计在一分钟之内查询出.

我觉得10秒钟都用不了
[/Quote]
如果是高档服务器,5S都要不了.
bullion 2008-04-22
  • 打赏
  • 举报
回复
谢谢各位了

我改成下面这种效果也是挺慢的
select * from T1 where pid = 2
union all
select * from T2 where pid = 2

两个表加起来差不多 50万条记录了, pid索引我也建了, 但速度还是挺慢的, 而且这两个表数据量是每天都在增加的, 是不是有比这种查询更好的方法呢
jinjazz 2008-04-22
  • 打赏
  • 举报
回复
〉〉20多万的表估计在一分钟之内查询出.

我觉得10秒钟都用不了
dawugui 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dawugui 的回复:]
select * from T1 where pid = 2
union all
select * from T2 where pid = 2
直接这样即可.
[/Quote]

同时对T1,T2表的PID字段建立索引.

20多万的表估计在一分钟之内查询出.
kk19840210 2008-04-22
  • 打赏
  • 举报
回复
直接
select * from T1 where pid = 2
union all
select * from T2 where pid = 2

分别在两个表的 PID 字段上面建索引
Limpire 2008-04-22
  • 打赏
  • 举报
回复
索引pid
jinjazz 2008-04-22
  • 打赏
  • 举报
回复
pid 上建立索引
kelph 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 bullion 的帖子:]
现在有两个表(结构相同) T1 和 T2, 两个表都有20几万条记录, 中间有一个关联字段 pid

目前执行查询sql:
select t.* from (
select * from T1 where pid = 2
union all
select * from T2 where pid = 2
) t

但发现查询速度很慢, 各位有没有好的办法提高查询效率

[/Quote]
外面的select t.*没什么用吧,括号里的即可
dawugui 2008-04-22
  • 打赏
  • 举报
回复
select * from T1 where pid = 2
union all
select * from T2 where pid = 2
直接这样即可.
zccmy22 2008-04-22
  • 打赏
  • 举报
回复
一。加条件。
二。把查询结果字段名打出来,不要用*.会好一些。

34,837

社区成员

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

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