巨大なSQL Serverテーブルに1つのパフォーマンスの問題があります。私たちは、このクエリを持っている:SQL Serverクエリのパフォーマンスの代替(LIKEステートメントでの文字列の連結)
SELECT cycle
FROM product AS pr
INNER JOIN productdetails AS prd
ON prd.label = 'XRT354511'
AND (pr.cycle = prd.cycle OR prd.cycle LIKE pr.cycle+ '-EXECUTED%')
コンディション後のOR文は-EXECUTEDで、製品テーブルのサイクルを連結したいと使用している(私たちはちょうどかどうかを知る必要があり、サイクルの「-EXECUTED」位置を気にしませんサイクルには-EXECUTEDが含まれます。
そこで、この問題を解決するために、私の提案は、この1のためにそのクエリを変更です:
SELECT cycle
FROM product AS pr
INNER JOIN productdetails AS prd
ON prd.label = 'XRT354511'
AND (pr.cycle = prd.cycle
OR (pr.cycle = prd.cycle AND pr.cycle LIKE '-EXECUTED%'))
私は2番目のクエリを実行すると、それはかなり高速かつスムーズに実行されます。
私の提案は有効ですか?私の提案を使用して、最初のクエリと同じ結果を得ることはできますか?
おかげ
ロジックは私に違って見える削除しようとすることができます。実際のデータを含めると、最初のクエリを改善する方法がわかるはずです。 2番目のクエリが同じ結果を返してよりうまく実行される場合は、もちろんそれを使用します。 –
これらのクエリは2つの異なる結果を返します –
クエリは同じ結果セットを返しますか?大括弧とAND/OR演算子には非常に注意が必要です。 –