MySQL データベースがあり、もう少し大きな検索を実行したいと考えています。
テーブルの 1 つに約 10,000 のレコードがあり、ゆっくりと成長すると予想されます。
最大の問題は、検索を実行するために 4 つの JOINS を使用してクエリを作成する必要があることです。これにより、検索が遅くなると思います。
構造体の例を次に示します。
[table records]
id INT unsigned PRIMARY KEY auto_increment
description text
label INT unsigned
type INT unsigned
price DECIMAL
[table records_labels]
id INT unsigned PRIMARY KEY auto_increment
label varchar
[table records_types]
id INT unsigned PRIMARY KEY auto_increment
type varchar
[table records_serial]
id INT unsigned PRIMARY KEY auto_increment
serial varchar
record INT unsigned
[table records_barcode]
id INT unsigned PRIMARY KEY auto_increment
barcode varchar
record INT unsigned
実行方法は次のとおり
です。選択するクエリを実行します。records.id, records.description, records.price, records_labels.label, records_types.type, records_serial.serial, records_barcode.barcode;
したがって、完全なクエリは次のようになります。
SELECT records.id, records.description, records.price, records_labels.label, records_types.type, records_serial.serial, records_barcode.barcode FROM records JOIN records_labels ON records_labels.id = records.label JOIN records_types ON records_types.id = records.type LEFT JOIN records_serial ON records_serial.record = record.id LEFT JOIN records_barcode ON records_barcode.record = record.id WHERE records_serial.serial LIKE %SEARCH_TERM% OR records_barcode.barcode LIKE %SEARCH_TERM%
ここでの解決策はインデックス作成だと思いますが、あまり詳しくありません。
では、この種のクエリを高速化して最適化するにはどうすればよいでしょうか?