マインドマップギャラリー 遅い SQL 処理の百科事典
MySQL 処理百科事典 ~ 必要な知識がすべてここにあります。 SQL が遅いと、サービスのスムーズな動作に損害を与える可能性があり、日常の開発においてアプリケーションのジッターを引き起こす最大の隠れた危険です。
2023-10-11 14:05:10 に編集されました遅い SQL 処理ガイド
質問
SQL が遅いと、サービスのスムーズな動作に損害を与える可能性があり、日常の開発においてアプリケーションのジッターを引き起こす最大の隠れた危険です。
遅い SQL のトラブルシューティングと解決
遅い SQL に隠れた危険性
サービスの円滑な運営への影響
日々の開発でよくある問題
遅い SQL を回避する方法
SQLクエリを最適化する
複雑な SQL を分割する
複雑な SQL を特定する
SQL のサブクエリ、関連クエリ、集計関数などの複雑な構造を識別する
SQL での複数テーブルの結合、並べ替え、グループ化、その他の操作を識別する
複雑な SQL を分解する
複雑な SQL を複数の単純な単一テーブル クエリに分割する
複数テーブルの結合、並べ替え、グループ化などの操作を削減します。
単一テーブルのクエリを最適化する
インデックスを使用する
データ量を削減する
クエリ条件の最適化
単一テーブルのクエリ結果をマージする
UNION や UNION ALL などの操作を使用して、単一テーブルのクエリ結果をマージします。
結果を結合するために JOIN 操作を使用しないでください。
マージ結果の最適化
マージ結果のデータ量を削減する
結合結果の並べ替え、グループ化、その他の操作を最適化します。
問題を分析し、EXPLAIN を使用する
EXPLAINコマンドを使用する
実行計画の表示
インデックスの使用状況を分析する
データの分布を確認する
問題要因を回避する
歴史的な理由による複雑な SQL
データ量の増加
遅い SQL を解決するためのアイデア
SQLを観察する
ビジネスシナリオを理解する
人間関係を整理する
問題を分析する
EXPLAIN ステートメントを使用する
分析インジケーター (タイプ、可能キー、キー、行、追加)
プランを指定する
ページングクエリに変換
全量のデータを直接取得し、メモリ内で並べ替えます。
サブクエリが関連クエリに変更されました
Force_index を使用してインデックスを指定するか、並べ替え方法を変更します
LIMIT とページングを使用してテーブル全体のスキャンを回避する
データの偏りが深刻な状況を最適化する
ES を使用してページングの深さをクエリまたは制限する
最適化の原則
適切なインデックスを作成する
インデックスの種類を理解する
通常のインデックス
ほとんどのシナリオに適しています
一意のインデックス
一意の値フィールドに適用されます
複合インデックス
複数のフィールドの組み合わせに適しています
空間インデックス
空間データに最適
全文インデックス
テキスト検索に適しています
インデックスフィールドの選択
頻繁にクエリされるフィールドを選択する
識別性の高いフィールドを選択する
適切な長さのフィールドを選択してください
インデックスのパフォーマンスを評価する
EXPLAINコマンドを使用する
実行計画の表示
インデックスの使用状況を分析する
インデックス作成戦略を最適化する
インデックスを定期的にメンテナンスする
冗長なインデックスを削除する
インデックスをマージする
インデックスの順序を調整します。
列への不要なアクセスを減らす
カバリングインデックスを使用する
カバリングインデックスとは
インデックスをカバーするということは、クエリ ステートメントで、テーブルにクエリを戻すことなく、必要なデータをすべてインデックスから取得できることを意味します。
利点: テーブルのクエリ回数が削減され、クエリの効率が向上します。
短所: インデックスが大きすぎて、書き込みパフォーマンスに影響を与える可能性があります。
カバリングインデックスの作成方法
適切なインデックス列を選択してください
クエリ ステートメントで頻繁に使用される列をインデックス列として選択する
区別性の高い列をインデックス列として選択する
複合インデックスの作成
複数の列を結合して複合インデックスを作成する
複合インデックスによりクエリ効率が向上し、インデックスの数が削減されます。
カバリングインデックスを使用する場合の注意事項
インデックス付き列に対する関数操作を避ける
関数操作によりインデックス障害が発生する可能性がある
インデックス付き列での型変換を回避する
型変換によりインデックスエラーが発生する可能性がある
インデックス付き列の計算を避ける
計算によりインデックスエラーが発生する可能性があります
インデックス付き列に対するあいまいクエリを回避する
ファジークエリはインデックスエラーを引き起こす可能性があります
インデックス付き列でのソートを避ける
ソートによりインデックスエラーが発生する可能性があります
インデックス列のページングを避ける
ページネーションによりインデックスエラーが発生する可能性がある
インデックス付き列の集計を避ける
集約によりインデックス障害が発生する可能性があります。
ステートメントの書き換え
クエリステートメントの最適化
インデックスを使用する
クエリ基準フィールドにインデックスが付けられていることを確認してください
インデックスエラーの原因となる可能性がある関数や演算子の使用は避けてください。
データ量を削減する
LIMIT を使用して、返されるデータ量を制限します
WHERE 句を使用してデータをフィルタリングする
サブクエリの使用を避ける
サブクエリの代わりに JOIN ステートメントを使用する
サブクエリの代わりに EXISTS 句を使用する
OR条件の最適化
OR 条件の代わりに UNION を使用する
OR 条件の代わりに IN を使用する
更新ステートメントの最適化
バッチアップデート
バッチ更新にトランザクションを使用する
ストアド プロシージャを使用したバッチ更新
ロック競合を軽減する
長時間ロックを保持しないようにする
トランザクション分離レベルが低い
削除ステートメントの最適化
LIMIT を使用して、削除されるデータの量を制限します
一括削除にはトランザクションを使用する
一括削除にはストアド プロシージャを使用します。
データ繰り越し
データ繰り越しとは何ですか
データキャリーオーバーとは、ある場所から別の場所へのデータの移動です。
データが繰り越される理由
データ量が大きすぎる
データ形式に互換性がありません
データを処理する必要がある
データの引き継ぎ方法
直接コピー
輸出入
データベース接続性
データ引き継ぎの最適化
適切なデータ引き継ぎ方法を選択してください
直接コピーは少量のデータに適しています
エクスポートとインポートは大量のデータに適しています
データベース接続はリアルタイム データを処理します
データ引き継ぎ速度の最適化
ネットワーク帯域幅を増やす
データベースクエリを最適化する
データ形式の最適化
データ引き継ぎに関する注意事項
データを安全に保ちます
暗号化通信を使用する
アクセスを制限する
データの整合性を確保する
トランザクション処理を使用する
データを定期的にバックアップします。
ソートする適切な列を選択します
並べ替えに文字列型を使用しないようにする
文字列型のソートパフォーマンスが低い
並べ替えには数値型を使用することをお勧めします
並べ替えに式の使用を避ける
式のソートパフォーマンスが低い
並べ替えには列の値を使用することをお勧めします
並べ替えに複数の列を使用しないようにする
複数列のソートパフォーマンスが低い
並べ替えには単一列を使用することをお勧めします
グループ化にソート列を使用しないようにする
ソート列のグループ化のパフォーマンスが低い
グループ化には他の列を使用することをお勧めします。
適切な列冗長性
列の冗長性によりテーブル結合の数を減らすことができます
接続数が増えると、クエリ速度が遅くなります。
列の冗長性により接続数が減り、クエリ速度が向上します。
列の冗長性によりディスク I/O が削減されます
ディスク I/O 回数が増えると、クエリ速度が遅くなります。
列の冗長性により、ディスク I/O が削減され、クエリ速度が向上します。
列の冗長性によりクエリの複雑さを軽減できる
クエリの複雑さが増すと、クエリの速度が遅くなります
列の冗長性により、クエリの複雑さが軽減され、クエリ速度が向上します。
列の冗長性によりクエリのパフォーマンスが向上します
クエリのパフォーマンスが向上すると、クエリの速度も速くなります
列の冗長性により、クエリのパフォーマンスが向上し、クエリの速度が向上します。
SQL分割
分割の理由
クエリ効率の向上
ロック競合を軽減する
保守性の向上
分割方式
縦に分割
業務機能に応じて分割
分割後も独立して維持可能
カップリングを減らす
水平に分割
データ範囲ごとに分割
クエリのパフォーマンスを向上させる
データの冗長性を削減する
分割原理
分割を最小限に抑える
過度の分割を避ける
メンテナンスコストの削減
ハードウェア リソースの使用率を最大化する
クエリのパフォーマンスを向上させる
ハードウェアコストの削減
データの冗長性を最小限に抑える
データの不整合を軽減する
データの精度を向上させる
データの独立性を最大限に高める
データ結合を削減する
データの保守性を向上させます。
ESの適切な適用