1

我需要优化以下查询(表group_attributes)得到列group_idattribute_idint_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查询似乎非常慢。

最好的,阿斯卡

4

2 回答 2

1

解决方案 - 我

我认为您可以通过创建以下索引来提高性能。

  1. 在 group_id 上创建聚集索引
  2. (attribute_id,int_value) 上的非聚集索引

解决方案 - II

您还可以将所有 int_values 插入临时表,然后在临时表上创建非聚集索引。还要在主表的 int_value 上创建非聚集索引。

于 2012-07-31T11:40:53.983 回答
0

首先,将所需int_values的所有内容存储到 Temp 表并创建聚集索引。其次,将这个临时表与group_attributes表进行内部连接。

希望这将提供更好的性能。也请更新性能结果。

于 2012-07-31T13:30:06.687 回答