1

次のクエリを使用しています。

SELECT qTermine.REISENR, 
       qTermine.REISEVON, 
       qTermine.REISEBIS, 
       MIN(qPreise.PREIS) AS PREIS 
FROM   qTermine, 
       qPreise 
WHERE  qPreise.REISENR = qTermine.REISENR 
       AND qPreise.PROVKLASSE = 1 
       AND qPreise.VERFUEGBAR <> 0 
GROUP  BY qTermine.REISENR, 
          qTermine.REISEVON, 
          qTermine.REISEBIS 

価格が最小の行のみを選択したい。

大丈夫ですか、それとも最適化できますか?

4

2 に答える 2

2

クエリ自体はそのままでいいです。ほとんどの用途では、あなたが書いたものは問題ありません。現在、パフォーマンスの問題が発生していますか、またはこのクエリが非常に長時間実行されていますか? それとも、単に用心深く、大きなボトルネックの発生を避けたいだけですか? 後者の場合は、心配する必要はないと思います。繰り返しますが、ほとんどの用途では問題ありません。

REISENR両方のテーブルと にインデックスがあることを確認してくださいqPreise.PREISPROVKLASSEとについてVERFUEGBARは、インデックスを追加する場合に実際にインデックスを使用するのに十分なほど一意ではないと感じていますが (実行計画で確認できます)、データを詳しく知らずに判断するのは困難です。

于 2012-05-03T06:21:57.333 に答える
0

クエリは良好で、「qPreise.PREIS」にインデックスがあるとパフォーマンスが向上します

于 2012-05-03T06:23:19.673 に答える