查看下面的SQL查詢 - 它允許您通過郵政編碼,公司名稱或城鎮(位置)搜索商店...在前端網站上將只有一個搜索沒有下拉搜索類型的文本框。查詢表現:按郵政編碼,公司名稱或城鎮搜索
如果shop_options.live
等於1,並且取決於哪一天開店:O_Hour.weekday = '5'
(星期五),它將只顯示結果。
如果我通過S_D.postcode
(例如:S_D.postcode = 'L14'
)搜索,它會從shop_delivery_area
表中找到L14,然後顯示該郵編的商店列表。
SELECT distinct S.*, S.company, S.street, S.town FROM shop as S
JOIN shop_delivery_area as S_D on S_D.shopID = S.shopID
JOIN shop_options on shop_options.shopID = S.shopID
JOIN shop_opening_hours as O_Hour on O_Hour.shopID = S.shopID
WHERE (S_D.postcode = 'Liverpool' OR S.company LIKE 'Liverpool' OR S.town LIKE 'Liverpool')
AND shop_options.live = '1' AND O_Hour.weekday = '5'
ORDER BY O_Hour.opentime
查詢確實有效,但速度很慢。幾乎一秒鐘才能得到結果。如何更快地提高性能?
編輯:固定SQL查詢。
你有多少數據?指標? – michael667
shop(1,200),shop_delivery_area(5000),shop_options(1200),shop_opening_hours(8000)rows ...我沒有編制索引 –
您是否已經使用EXPLAIN? http://dev.mysql.com/doc/refman/5.0/en/explain.html索引可能也會有所幫助,因爲您已經在所有表格中都有ID列 – michael667