球球 发表于 2008-9-2 11:28

救助,关于union语句的优化

请问,下面的这条语句该怎么优化?
Select Count(*) as usercount from (

SELECT UserID FROM IPTV_COOK_PROGRESS where RowTime between '08-08-01' and '08-08-31'

UNION SELECT UserID FROM IPTV_FISH_HISTORY where RowTime between '08-08-01' and '08-08-31'

UNION SELECT UserID FROM IPTV_FIND_HISTORY where RowTime between '08-08-01' and '08-08-31'

UNION SELECT UserID FROM IPTV_QUIZ_HISTORY where RowTime between '08-08-01' and '08-08-31') a

bb3852 发表于 2008-9-2 13:13

1 * 改为1
2 union 改为union all
3 between and 改为>= <=
4 RowTime建立索引

球球 发表于 2008-9-5 02:09

谢谢。我分别在RowTime_UserID,RowTime,UserID上面创建了索引,查询百万条数据,从1万6毫秒提高到2百毫秒以内。

页: [1]

编程论坛