0
私は以下のクエリを持っています。私はインデックスを使用してmySqlクエリのパフォーマンスを最適化
Explain
SELECT
a.ProductID,
a.ProductName,
b.ShelfID,
b.SCode,
c.CompanyID,
c.CompanyName,
d.CategoryName,
ProdCategoryID
FROM tblProduct a
LEFT OUTER JOIN tblShelfComp b
ON a.ProductSID = b.ShelfID
INNER JOIN tblCompany c
ON a.ProductCompId = c.CompId
LEFT OUTER JOIN tclCategory d
ON a.CategoryID = d.CategoryID
ORDER BY a.ProductName
は、このクエリを実行するのには時間がかかるO/Pに
id Select_type table type Possible_keys Key Key_len ref rows Extra
1 SIMPLE a ALL (NULL) (NULL) (NULL) (NULL) 45850 Using where; Using filesort
1 SIMPLE b Eq_ref PRIMARY PRIMARY 34 a. ProductSID 1 (NULL)
1 SIMPLE c Eq_ref PRIMARY PRIMARY 34 a. ProductCompId 1 (NULL)
1 SIMPLE d Eq_ref PRIMARY PRIMARY 34 a. CategoryID 1 (NULL)
を与えるMySQLデータベースを使用しています。だから私はそれがどのように機能しているかを知るために説明を使用しています。しかし、私はこの結果をどうするかを決めることができません。パフォーマンスを最適化するために必要なステップ
結果の行数に応じてクエリがどのくらい時間がかかりますか? – Seb
実行には約20秒かかります。 45k行を返す –
私に関係する唯一のことは、結合に使用される主キーフィールドの長さです。それらが整数フィールドではないことを示唆します。整数は結合の方が効率的です。 – Kickstart