【发布时间】:2014-09-23 13:20:34
【问题描述】:
我有一个这样的 sql 查询:
SELECT * FROM table WHERE field IN (a,b,c,d,e,f,g,h....)
这里 in() 子句中的列表大小可能高达 2000,并且该表是在 SybaseIQ 中创建的视图。据我所知,我无法在视图中创建索引。 那么还有其他可能的方法来优化这个查询吗?
我现在通过谷歌找到的:
- 使用 union all 而不是 in,这需要很长的 union all 列表(最多 2000 个)
- 将in 子句中的列表插入表中并尝试加入,我还不能这样做,因为sybase IQ 数据库不属于我,我只能进行查询。
提前致谢。
【问题讨论】:
-
还有,是mysql还是sybase?
-
如果您确实需要这样做以提高效率并且您受到限制,您可能需要将视图复制到可以创建表的本地数据库中。联合不会更快,但带有索引的单独表会。视图上的索引无济于事,无论如何,您需要它在列表中。
标签: mysql sql optimization sybase