php - 如何提高这个mysql查询的速度

标签 php mysql query-optimization

这里是

SELECT tbl_rls . * , (

SELECT count( * )
FROM `comments`
WHERE `post_id` = `tbl_rls`.`id`
) AS `t_comments`
FROM `tbl_rls`
WHERE 1 =1
AND `status` <> 'denied'
AND (
`id`
IN (

SELECT `rls_id`
FROM `tbl_visitors_logs`
WHERE `date` LIKE '2010-07-02%'
AND `page_type` = 'post'
GROUP BY `rls_id`
ORDER BY count( * ) DESC
)
)
AND (
`cat` = '6'
OR `cat`
IN (

SELECT `id`
FROM `tbl_cats`
WHERE `parent_id` = '6'
)
)
ORDER BY `tbl_rls`.`date` DESC
LIMIT 0 , 20

这几乎是在执行时杀死数据库,有人可以建议解决方案以使其快速吗?

我在这里提供任何需要的额外信息。

谢谢。

最佳答案

你有没有运行 EXPLAIN命令查看查询的哪一部分运行缓慢?

此外,这一行可能是个问题:WHERE date LIKE '2010-07-02%' 这可能导致日期列被转换为字符串(请告诉我这不是string!) 这将阻止使用任何索引。请尝试 WHERE DATE(date) = '2010-07-02'

关于php - 如何提高这个mysql查询的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3169189/

相关文章:

javascript - 使用 php 和 jquery ajax 从 mysql 数据库中获取数据

mysql - 从同一表的其他列更新 mysql 列字段值

MySQL:从 6 个巨大的相同表中优化 SELECT,这些表具有按时间戳拆分的不同数据

c# - 遍历大量记录

php - 亚马逊简单队列服务 (SQS)

php - 为什么我的查询结果只输出一行?

php - 使用数据库 session 登录?

mysql - 改进此 MySQL 查询 - 选择为子查询

php - 如何在不打断单词的情况下拆分长字符串?

带有 php 变量的 JavaScript 无法正常工作