mysql查询性能太低,如何提高

标签 mysql

我有 3 个表,用户、user_to_topics、主题。

SELECT
topics.* FROM
user_to_topics INNER JOIN topics
ON topics.id = user_to_topics.topic_id
WHERE user_to_topics.user_id=12345
ORDER BY topics.created_at DESC
LIMIT 10

topics表有5M条记录,user_to_topics有10M条记录,这条sql的意思是查找id为12345的用户感兴趣的所有主题,按created_at DESC排序

当我这样查询时

SELECT topic_id FROM user_to_topics WHERE user_id = 12345

然后

SELECT * FROM topics WHERE id IN (the results above) ORDER BY created_at DESC LIMIT 10

也很慢

我上面使用的所有列都添加了单列索引

我应该如何向这些表添加索引或者应该更改这些表的结构?

最佳答案

在查询之前使用 EXPLAIN,然后查看应该对哪些列建立索引,通常是那些使用较多的列,我已使用索引将 AJAX 请求时间从 1.6 分钟减少到 7 秒

关于mysql查询性能太低,如何提高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26216567/

相关文章:

php - 是否可以使用mysql查询下载大型数据库

mysql - 如何编写一个查询,根据 3 列获取每行 1 行?

mysql - 查询并不总是在 true 时显示结果

mysql - 已部署 MYSQL 的 Hibernate 通信链路故障

php - 使用 PHP、MySQL、Jquery 和 Ajax 创建 5 星评级系统

php - yii2 如何获取选定的下拉值

java - 如何将ArrayList数据插入数据库

mysql - 如何搜索带有替代字符的字符串?

mysql - 如果元组在集合中则更新,否则插入 MySQL

php - 从任意日期转换为单一日期格式