みなさん、こんにちは、私はこのコラムの「MySQLの本当の」生徒の一人として、これは41日の私の最初のパンチであり、また、この操作アウト私の第104キャリー、雪を隠すんです。
今日、私は「なぜこれらのSQL文と同じロジックと呼ばれる記事の欄を確認し、パフォーマンスが大きな違いでしょうか?「記事。
キーワード概要:ケースI:条件フィールドオペレーション機能(ツリーインデックス機能を与えるための理由)、ケースII:暗黙の型変換(型変換、参照>メソッドは、9を選択し、「10」の結果)、ケース3:隠し文字エンコーディングの変換式(実行フローの結果を示す表でドライブとドリブンテーブルクエリの結果は、矛盾が最適化アプローチをフィールド符号化文字集合を関連する文をEXPLAIN)。
研究の概要:
ケースI:条件フィールドオペレーション機能
放棄行く-treeインデックス機能
操作を行うには、インデックスフィールドの機能は、インデックス値の順序を弱体化させることができ、オプティマイザは、ツリーインデックスを離れて与えることにしました。
ケースII:暗黙の型変換
型変換
- データ型変換のルールは何ですか?
- データ型変換を行うなぜ、あなたは全索引スキャンを取る必要がありますか?
>メソッドは、9を選択し、「10」を結果を参照してください。
- ルールがある場合、結果は1でなければなりません「デジタルへの文字列は、」その後、デジタルコンパレータを行うことです。
- ルールがある場合は、文字列の比較が行われている「数字の文字列に変わるために、」、結果はゼロでなければなりません。
ケースIII:暗黙の文字コード変換
テーブル駆動と駆動テーブル、クエリ結果
- オプティマイザは、第一主キーインデックスステップを使用していたトランザクション履歴テーブルの行で指定された状態で発見される最初の行を示し、行= 1は、走査線を示しています。
- 示す第2の回線キー= NULL、そのトランザクションの詳細テーブルには支出フィールドインデックス、全表スキャン。
代表実装プロセスの結果を説明
- 最初のステップは、トランザクションレコードテーブルの行で指定された条件を見つけるためのIDに基づいています。
- 第二工程は、フィールド条件指定された行の値から除去されます。
- 第3のステップは、フィールドの値に基づいて、テーブルを基準取引の詳細と一致する行を見つけることです。結果は、2行目のキーは= NULLプロセスは、方法をトラバースすることによって、主キーインデックスであることを示して説明し、個別に決定されたフィールドの値が一致します。
関連フィールドの文字セットは矛盾した文の際に最適化アプローチであります
- 一般的な方法は、utf8mb4になっ文字セットテーブルのフィールド上の取引の詳細を最適化することで、そのキャラクタ・セット変換の問題はありません。
- 私たちは、文字セットのフィールドを変更することができた場合は最高です。大規模なデータの量、または一時的DDLでビジネスを行うことができない場合は、その後、あなただけのSQLステートメントを変更する方法を使用することができます。
遂に
再は、テキストに記載された内容をまとめ:操作を行うにはインデックスフィールドの機能は、オプティマイザのインデックス値の秩序に損傷を与える可能性があるツリー索引、暗黙の型変換、暗黙の文字エンコーディング変換を離れて与えることにしました。