查看下面的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