沉睡的悟空 2011-10-19 11:42
浏览 543
已采纳

mysql 3个表关联时查询时的优化

一共三张表tips,tippings,comments。tippings 是中间表。tips 和 comments 是多对多的关系。tips只有两列:id,name
tippings 的create语句:
[code="sql"]
CREATE TABLE tippings (
id INT(11) NOT NULL AUTO_INCREMENT,
tip_id INT(11) NULL DEFAULT NULL,
tippable_id INT(11) NULL DEFAULT NULL,
tipper_id INT(11) NULL DEFAULT NULL,
tipper_type VARCHAR(255) NULL DEFAULT NULL,
tippable_type ENUM('Post','Comment') NULL DEFAULT NULL,
context ENUM('tips') NULL DEFAULT NULL,
created_at DATETIME NULL DEFAULT NULL,
PRIMARY KEY (id),
INDEX index_tippings_on_tip_id (tip_id),
INDEX index_tippings_on_tippable_id_and_tippable_type_and_context (tippable_id, tippable_type, context),
INDEX index_cttt (context, tippable_type, tippable_id, tip_id)
)
[/code]
查询语句为
[code="sql"]
SELECT tips.*, COUNT(*) AS count FROM tips LEFT OUTER JOIN tippings
ON tips.id = tippings.tip_id INNER JOIN
comments ON comments.id = tippings.tippable_id WHERE (tippings.tippable_type
= 'Comment') GROUP BY tips.id, tips.name HAVING COUNT(*) > 0 ORDER BY
count desc LIMIT 75;
[/code]
tippings 目前800多万条记录。
查询速度太慢
各位帮忙看看能不能更好的优化下

  • 写回答

5条回答 默认 最新

  • 爱上一条鱼 2011-10-20 16:09
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?
  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)