SELECT * FROM employees WHERE last_name = 'Smith';
テーブルの 1 つの列を複数回クエリする場合は、その列のインデックスを作成します
あなたまたはアプリが条件に基づいて複数の列からのデータを必要とする場合は、複合インデックスを作成します
例: テーブルに 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';
主キーを使用してテーブルを結合する場合、主キーはすでにインデックスであるため、作成する必要はありません
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 は条件であるためインデックスを作成する必要があります
ユーザーや注文のリスト、その他頻繁に変更されないものなど
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 サイトの他の関連記事を参照してください。