4

このクエリの最適化を手伝ってくれる人はいますか?

SELECT(X1,      
    X2   
FROM TABLEAA   
 WHERE   
        Y IN (SELECT Y FROM TABLEBB WHERE Z=SELECTED)   
    AND Y  IN  (SELECT Y  FROM TABLECC  WHERE ZZ=SELECTED)    
)

一方

TABLEAA : 1 million enteries    
TABLEBB : 22 million enteries    
TABLECC : 1.2 million enteries  

それは機能しますが、時間がかかりすぎます.30秒近くかかります

これを正す他の方法はありますか?

編集: Z と ZZ はまったく異なる 2 つの列です

4

4 に答える 4

2

私は使用しますJOINs

SELECT DISTINCT
    A.X1,      
    A.X2   
FROM TABLEAA A
   JOIN TABLEBB B ON A.Y = B.Y AND B.Z='SELECTED'
   JOIN TABLECC C ON A.Y = C.Y AND C.Z='SELECTED'

また、AY、BY、CY に適切なインデックスがあることを確認してください。Z 列にインデックスを追加すると、パフォーマンスが向上する場合があります。これは、テーブル構造やその他の要因によって異なります。

于 2013-07-11T22:19:46.727 に答える
0

インデックス...

  • にインデックスを追加ZするTABLEBB
  • にインデックスを追加ZZするTABLECC
  • にインデックスを追加YするTABLEAA
于 2013-07-11T22:19:33.097 に答える
0
SELECT X1, X2 FROM TABLEAA 
JOIN TABLEBB ON Y = Y JOIN TABLECC ON Y = Y 
WHERE TABLEBB.Z = SLECTED && TABLECC.ZZ = SLECTED
于 2013-07-11T22:19:39.217 に答える