ホームページ > データベース > mysql チュートリアル > MySQL でのクエリの最適化は、特に大規模なデータセットを扱う場合、データベースのパフォーマンスを向上させるために重要です。

MySQL でのクエリの最適化は、特に大規模なデータセットを扱う場合、データベースのパフォーマンスを向上させるために重要です。

Mary-Kate Olsen
リリース: 2024-12-25 00:46:11
オリジナル
538 人が閲覧しました

Query optimization in MySQL is crucial for improving database performance, especially when dealing with large datasets

1. 適切なインデックスを使用する

  • インデックスは、スキャンされるデータ量を削減することでデータ取得を高速化します。
SELECT * FROM employees WHERE last_name = 'Smith';
ログイン後にコピー
  • テーブルの 1 つの列を複数回クエリする場合は、その列のインデックスを作成します

  • あなたまたはアプリが条件に基づいて複数の列からのデータを必要とする場合は、複合インデックスを作成します

2. SELECT * を避ける

  • 不要な列をすべて選択すると、必要な列のみを選択します。これにより、サーバーの RAM がより多く消費され、高負荷または高頻度の時間ではサーバーの速度が低下するだけです。

例: テーブルに created_at や updated_At などの列が含まれている場合、timestamps は通常のシナリオでは必要ないため * を選択しないようにします

非効率なクエリ

SELECT * FROM orders WHERE order_date > '2023-01-01';

ログイン後にコピー

最適化されたクエリ

SELECT order_id, customer_id FROM orders WHERE order_date > '2023-01-01';

ログイン後にコピー
  1. 結合を最適化する
  • JOIN 条件で使用される列にインデックスが存在することを確認してください。

主キーを使用してテーブルを結合する場合、主キーはすでにインデックスであるため、作成する必要はありません

SELECT orders.order_id, customers.name FROM orders
JOIN customers ON orders.customer_id = customers.id
WHERE customers.country = 'USA';
ログイン後にコピー

上記のクエリでは、orders.customer_id にインデックスを付ける必要があり、これは別のテーブルからのリレーションです

customers.id は得意先テーブルの主キーであるため、インデックスを作成する必要はありません

customers.country は条件であるためインデックスを作成する必要があります

5. サブクエリを避ける。代わりに結合を使用する

6. クエリキャッシュを使用する

  • クエリ結果が頻繁に変更されない場合は、MySQL のクエリ キャッシュを使用してください。

ユーザーや注文のリスト、その他頻繁に変更されないものなど

7. 大きなテーブルのパーティション化

CREATE TABLE orders (
    order_id INT NOT NULL,
    order_date DATE NOT NULL,
    ...
    PRIMARY KEY (order_id, order_date)
)
PARTITION BY RANGE (YEAR(order_date)) (
    PARTITION p0 VALUES LESS THAN (2000),
    PARTITION p1 VALUES LESS THAN (2010),
    PARTITION p2 VALUES LESS THAN (2020),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);

ログイン後にコピー

以上がMySQL でのクエリの最適化は、特に大規模なデータセットを扱う場合、データベースのパフォーマンスを向上させるために重要です。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート