私は2つのテーブルを持っています(「キー」は約6つのフィールドで構成され、「統計」は約65のフィールドで構成されています)。SQLクエリを最適化する方法は?
フレーズテキストを複製せずに両方のテーブルに行を挿入したいとします。私は次のようなものを使用します:
UPDATE Keys SET CommandType = 'ADDED', CommandCode = @CommandCode WHERE
KeyText = @KeyText AND Tab_ID = @TabID AND CommandType = 'DELETED';
INSERT INTO Keys (IsChecked, KeyText, AddDateTime, Tab_ID, KeySource_ID, CommandCode, CommandType)
SELECT 0, @KeyText, datetime(), @TabID, @KeySourceID, @CommandCode, 'ADDED'
WHERE NOT EXISTS (SELECT 1 FROM Keys WHERE Tab_ID = @TabID AND KeyText = @KeyText);
INSERT INTO Statistics (Key_ID)
SELECT ID FROM Keys WHERE KeyText = @KeyText AND Tab_ID = @TabID AND (CommandType IS NULL OR CommandType <> 'DELETED') AND
NOT EXISTS (SELECT 1 FROM Statistics WHERE Key_ID = (SELECT ID FROM Keys WHERE KeyText = @KeyText AND Tab_ID = @TabID AND (CommandType IS NULL OR CommandType <> 'DELETED') LIMIT 1));
どうすれば最適化できますか?このクエリフィールドで使用されるすべてのインデックスを作成します。たぶんあなたは私にいくつかのソリューションをお勧めできますか?
私の悪い英語を助けてくれてありがとう。
最適化が必要なのは何ですか?挿入に時間がかかりますか? – Randy
SQLプロファイラを試しましたか? –
うん!問題は私のテーブルのインデックスが悪いことです。私はそれを再構築し、いくつかのクエリパラメータを静的なコンテンツに置き換えて、うまくいく! ありがとうございます! – Dmitriy