GO SET STATISTICS TIME ON [DBO]から選択した回数([StyleId])。[Ky_Style] のSET STATISTICS TIME OFF ON SET統計をTIME [DBO]からの選択数(*)。[Ky_Style] のSET STATISTICS TIME OFF ON SET統計TIME SELECT [Ky_Style] [DBO]からのHとして(*)カウント OFF SET統計TIME
(1 影響を受けた行) SQL Serverの実行時間: CPU時間 = 687ミリ秒、経過時間= 925 秒。 (1 行が影響を受けた) SQL Serverの実行時間を: CPU時間 = 594ミリ秒、経過時間= 594 ミリ秒。 (1 行が影響を受けた) SQL Serverの実行時間を: CPU時間 = 594ミリ秒、経過時間= 688ミリ秒。
1.それ以外の場合はエンジンがインデックスと全表スキャンを使用して放棄する、句!=または<>オペレータでは避けるべきです。
それほど正確で、SQL Server 2008でテストされ、あなたはまた、結合をインデックス化されていない、と行数の割合は、テーブルの行数を返すために、列の復帰に応じて、見つけるために、インデックスを取ることができますという意味ではありません。
3.避けることをお勧めヌル値に節が判断されるフィールド、エンジンがインデックスとフルテーブルスキャンを使用して放棄します:このように、
numはTがNULLである場所からSELECT ID
ヌルを確保しないように0 NUM、NUM表の列のデフォルト値を提供することができます値は、このクエリ:
SELECT ID NUM = 0からTここで
誤差は、与えられた用途の場合ので、テストはよく、ヌルインデックス検索が取ることができるである;
4.接続は、where句、または回避されるべきです条件は、それ以外の場合はエンジンがインデックスとフルテーブルスキャン使用放棄する原因となるような、:
SELECTを上記NUM = 10またはNUM = 20ここで、TからIDを挙げる
:でしこのクエリ
NUM = 10 SELECTは、上記ここでTからIDを言及
連合のすべての
SELECTは、上記TからIDを挙げるWHERE NUM = 20
精度の低い条件を見つけるためにインデックスを取ることができるかどうかの条件は、その後、私は全表スキャンが必要ですが、労働組合や組合とこのすべてを依頼することがあるかどうかを確認するために、全表スキャン ; 6.Inは注意して使用する必要があるとないで、それ以外の場合は、全表スキャンにつながります
、のような:
(1,2,3)におけるTからNUM SELECT ID
:連続した値のためには、間に使用することができない
。NUM BETWEEN ID 3. 1及びTからの選択
エラー、SQLは通常、唯一の意味を表す述語ない実装の計画に代わって、7 WHERE句でのパラメータは、全表スキャンにつながる場合。実行時にSQLがローカル変数のみを解決しますが、オプティマイザは、実行するアクセス・プランの選択を延期することはできませんので、それはコンパイル時に選択する必要があります。しかし、コンパイル時にアクセス・プランを確立する場合、変数の値が不明であるため、選択されたインデックスエントリとして使用することはできません。次の文は、全表スキャンを実行しますよう: SELECTをNUM NUMは、WHEREトン、上記のIDから= @ インデックスを使用してクエリを強制的に変更することができます。 とSELECT上記NUM = NUM @トンからID(インデックス(インデックス名))が挙げ間違っている、もちろんあなたはパラメトリックに行くことができますが索引参照; 20テーブル変数ではなく、一時テーブルを使用しています。テーブル変数は、大量のデータが含まれている場合は、インデックスが(主キーのみインデックス)非常に限られていることに注意してください。私は、意図を知りません。テーブル変数がインデックスではなく、統計情報、および固定サイズ以上のものをサポートしていない、テーブル変数は、一時テーブルのtempdbと同じに保存されます21.避けては頻繁に作成し、一時テーブルの削除リソースの消費を減らすために、システムテーブルを。、意図を知ってはいけない;セッションが終了し、一時テーブルは自動的に解除された1が大量のデータを挿入する場合、新しい一時表23.を
、あなたはに選択する代わりに、テーブルを作成し使用することができ、ログの多数を避けるために、 システムテーブルを容易にするために、小さなデータリソース場合は、挿入し、テーブルを作成する必要があり、速度を上げるためには、。
、精度の低い旧確かにケースが、2008年以降... [挿入、および最小限に同じログに...選択します。
24.あなたは一時テーブルに使用している場合は、ストアドプロシージャの終わりに、すべての一時的なことを確認してください表は、明示的に、除去、テーブルドロップ、最初の切り捨てテーブルを システム・テーブルに長い時間をロックを回避するために、。
テストされていない、彼らはちょっと、話すことはありません
30.大きなトランザクション操作を避けるようにしてくださいシステムの同時実行性を向上させ、。
、それほど正確で一つだけのコミットので、大きいか小さい総務事項はまだ、確かに速く大規模な取引に、繰り返しN回を提出するために、単一のユーザーのために見ていると、同時ユーザーのために、一般的に短い総務を願っています可能な限り小さく。