积极答复者
mssql2000 分区视图查询的问题

问题
-
由于数据库是mssql2000没有分区表的概念,源表数据量太大,目前想提高查询效率
故按日期每月手工建立分区表,每月的数据放入对应的分区表中,并更新分区视图
比如 有分区表如下
T_MONTH_201101 约束为date[20110101,20110131]
T_MONTH_201102 约束为date[20110201,20110228]
分区视图如下
VW_MONTH
AS
SELECT * FROM T_MONTH_201101
UNION ALL
SELECT * FROM T_MONTH_201102
--问题如下
SELECT * FORM VW_MONTH WHERE DATE='20110103' --查看执行计划,查询只检索 表T_MONTH_201101
但是如果按照下面的写法
DECLARE @IN_DATE VARCHAR(8)
SELECT @IN_DATE='20110103'
SELECT * FROM VW_MONTH WHERE DATE=@IN_DATE --查看执行计划,查询会遍历两个表
请问如果where必须用变量如何能取得只检索一张表的效果?
答案
-
这个问题我也遇到,是使用参数造成的
如果使用拼接字符串的方式就没问题
这里可以使用exec('SELECT * FROM VW_MONTH WHERE DATE='+@IN_DATE) 来完成查询
family as water- 已建议为答案 Stephanie Lv 2011年5月16日 8:08
- 已标记为答案 WeiLin QiaoModerator 2011年5月19日 8:24
-
DECLARE @IN_DATE VARCHAR(8) SELECT @IN_DATE='20110103' EXEC('SELECT * FROM VW_MONTH WHERE DATE='''+@IN_DATE+'''')
--btw:我在csdn已经回复过你这个问题了。
- 已建议为答案 Stephanie Lv 2011年5月16日 8:08
- 已标记为答案 WeiLin QiaoModerator 2011年5月19日 8:24
-
Upgrade it asap, MS doesn't support sql2k anymore.
- 已建议为答案 Stephanie Lv 2011年5月16日 8:08
- 已标记为答案 WeiLin QiaoModerator 2011年5月19日 8:24
全部回复
-
这个问题我也遇到,是使用参数造成的
如果使用拼接字符串的方式就没问题
这里可以使用exec('SELECT * FROM VW_MONTH WHERE DATE='+@IN_DATE) 来完成查询
family as water- 已建议为答案 Stephanie Lv 2011年5月16日 8:08
- 已标记为答案 WeiLin QiaoModerator 2011年5月19日 8:24
-
DECLARE @IN_DATE VARCHAR(8) SELECT @IN_DATE='20110103' EXEC('SELECT * FROM VW_MONTH WHERE DATE='''+@IN_DATE+'''')
--btw:我在csdn已经回复过你这个问题了。
- 已建议为答案 Stephanie Lv 2011年5月16日 8:08
- 已标记为答案 WeiLin QiaoModerator 2011年5月19日 8:24
-
Upgrade it asap, MS doesn't support sql2k anymore.
- 已建议为答案 Stephanie Lv 2011年5月16日 8:08
- 已标记为答案 WeiLin QiaoModerator 2011年5月19日 8:24