【发布时间】:2012-07-31 11:15:12
【问题描述】:
我需要优化以下查询(表group_attributes)得到列group_id、attribute_id 和int_value。
select group_id
from group_attributes
where attribute_id= 1049
and int_value in (1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255,
1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264,
1265, 1266, 1267, 1268, 1269, 1270, 1271)
group_attributes 是一个巨大的表,查询需要很长时间。
我不是 SQL 方面的专家,所以我想知道哪个查询会运行得更快?总的来说,这些IN 查询似乎非常慢。
最好的,阿斯卡
【问题讨论】:
-
表中有哪些索引?可以展示一下执行计划吗?
-
我猜
(attribute_id, int_value, group_id)上的索引会很有效。 -
可能只是“风格”的问题,但在您的特殊查询中,您可以使用
int_value BETWEEN 1247 AND 1271。 -
索引为: GA_ATTRIBUTE_ID_INDEX 非集群位于 PRIMARY ATTRIBUTE_ID GA_GROUP_ID_INDEX 非集群位于 PRIMARY GROUP_ID UQ_GROUP_ATTRIBUTES_TRX_ID 非集群、唯一、唯一键位于 PRIMARY TRX_ID
标签: sql sql-server performance query-optimization