SELECT * FROM
articles
t
LEFT OUTER JOINcategory_type
category
ON(t
。category_id
=category
。{ {1}}) WHERE(t.status = 6 AND t.publish_on< ='2014-02-14'和t.id NOT IN(13112,9490,9386,6045,1581,1034,991,933,879,758)和t.category_id IN(14) )按照DES.LIMIT 7的顺序排序;
执行此查询需要1.5秒以上。
你能告诉我一些意见吗?如何改进此查询并缩短执行时间?答案 0 :(得分:1)
第一件事=>使用where
代替inner join
。因为where
比inner join
查询更快。
第二件事=>将indexes
用于frequently searched columns
。在您的示例中,您根据状态搜索,除了id为primary index
之外,发布__。
答案 1 :(得分:0)
如果您使用的是mysql,那么您可以在phpmyadmin中尝试建议表结构选项,它可以帮助您确定列名的有效数据类型。这可以帮助您优化查询处理。
查询处理时间取决于许多因素,例如:数据库服务器负载,表中的数据量以及用于列名的数据类型。
答案 2 :(得分:0)
为什么要将它与类别表连接?,类别表不在where子句中,也不在select列子句中,那么为什么要在查询中添加它呢?
使用了道歉