嗨,我知道有很多主题专门用于查询优化策略,但是这个主题太具体了,我无法在 Internet 上的任何地方找到答案。
我在 eshop 中有很大的产品表(大约 180k 行),该表有 65 列。是的,是的,我知道很多,但我在那里存储有关书籍、dvd、蓝光和游戏的信息。
我仍然没有考虑在查询中使用很多列,但是选择仍然很棘手。有很多条件需要考虑和比较。下方查询
SELECT *
FROM products
WHERE production = 1
AND publish_on < '2012-10-23 11:10:06'
AND publish_off > '2012-10-23 11:10:06'
AND price_vat > '0.5'
AND ean <> ''
AND publisher LIKE '%Johnny Cash%'
ORDER BY bought DESC, datec DESC, quantity_storage1 DESC, quantity_storege2 DESC, quantity_storage3 DESC
LIMIT 0, 20
我已经尝试在 where 子句中的 cols 甚至按子句的 order by 子句中一一放置索引,然后我尝试在 (production, publish_on, publish_off, price_vat, ean) 上创建复合索引。
查询仍然很慢(几秒钟),它需要很快,因为它的 eshop 解决方案和人们因为没有快速得到结果而离开。而且我仍然没有计算需要执行搜索所有找到的行以便进行分页的时间。
我的意思是,让它快速的最好方法是简化查询,但在这种情况下,所有的条件和排序都是必须的。
任何人都可以帮助解决此类问题吗?是否有可能加快这种查询速度,或者有没有其他方法可以简化查询并将其余部分留在 php 引擎上对结果进行排序。
哦,我真的对此一无所知..请分享您的智慧...
提前谢谢了