嗨,我知道有很多主题专门讨论查询优化策略,但是这个主题太具体了,我无法在Internet上的任何地方找到答案。
我在eshop中有一个大表的产品(约18万行),该表有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
Run Code Online (Sandbox Code Playgroud)
我已经尝试在where子句中甚至逐个order子句中在cols上逐一放置索引,然后我尝试在on上创建复合索引(生产,publish_on,publish_off,price_vat,ean)。
查询仍然很慢(几秒钟),并且需要快速,因为它的eshop解决方案和人们因无法快速获得结果而离开。而且,我仍然没有计算搜索所有找到的行所需的时间,以便可以进行分页。
我的意思是,使其快速完成的最佳方法是简化查询,但是在这种情况下,必须满足所有条件和排序。
任何人都可以帮助解决此类问题吗?甚至有可能加快这种查询的速度,还是有其他方法可以简化查询,而将其余的留在php引擎上以对结果进行排序。
哦,我真的对此一无所知。请分享您的智慧
提前谢谢了