【发布时间】:2013-05-10 06:01:47
【问题描述】:
我们有一个视图表,从视图中选择通常会花费太多时间。
例如:select x,y,z from view1 加载时间过长。这个还行。
如果您查询:select x,y,z from view1 where x in ('abc') 在几秒钟内查询。
如果您查询:select x,y,z from view1 where x in (select 'abc' from table1 where y='1234') 在几秒钟内查询。
但如果你查询:
select x,y,z from view1 where x in (select x from table1 where y='1234') 查询时间过长,这是我们要解决的问题。
顺便说一句,你可以认为:select x from table1 where y='1234'
返回'abc' 一行。
上面描述的场景, 您认为在第三个查询上花费这么多时间进行查询的原因可能是什么。 我们尝试加入,但没有成功。
【问题讨论】:
-
你最后一句“它没有用”是什么意思?你收到错误了吗?您是否未能获得所需的结果?是否与您现有的查询一样长(或更长)?你能发布你的观点的定义吗? table1 是否已经在其中使用?通常会从 y='1234' 的 table1 中选择多少个不同的 x 值?您对正在使用的表有哪些索引?这是哪个 RDBMS(SQLServer、Oracle、MySQL 等)?