1

次のクエリ(テーブルgroup_attributes)のgetcolumnsgroup_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クエリは非常に遅いようです。

最高、アスカー

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_valuesTempテーブルに格納し、クラスター化インデックスを作成します。次に、内部はこの一時テーブルをテーブルと結合しgroup_attributesます。

これにより、パフォーマンスが向上することを願っています。また、パフォーマンス結果を更新してください。

于 2012-07-31T13:30:06.687 に答える