我有以下表格:提高SQL查詢性能
- 產品
- 分類
- 小類
- 品牌
具有以下字段:
產品:
- ID
- 名
- 內容描述
- 內容描述2
- description3
- id_category
- id_subcategory
- id_brand
分類:
- ID
- 名
小類
- ID
- 名
品牌
- ID
- 名
我想是要進行查詢,用戶輸入1個或多個單詞,然後搜索我所有上述領域。
這是我的查詢現在:
SELECT DISTINCT p. *
FROM products p, categories c, subcategories s, brands m
WHERE p.name LIKE 'word%'
OR p.description1 LIKE 'word%'
OR p.description2 LIKE 'word%'
OR p.description3 LIKE 'word%'
OR (
c.name LIKE 'word%'
AND c.id = p.id_category
)
OR (
s.name LIKE 'word%'
AND s.id = p.id_subcategory
)
OR (
m.name LIKE 'word%'
AND m.id = p.id_brand
)
LIMIT 10 ;
有什麼辦法來調整這個查詢,使其更快?該數據庫已經有不少產品,所以我懷疑這個查詢顯示的時間可能是因爲這個。
任何消耗?
謝謝!
或者使用INNER JOIN以防萬一您無法獲得NULL值產品表 – NoLifeKing 2010-09-15 11:31:45
從30秒長到0.03秒用此解決方案:) – brunom 2010-09-15 11:41:56
謝謝NoLifeKing – brunom 2010-09-15 11:42:15