【发布时间】:2017-11-22 22:22:57
【问题描述】:
当 MySQL 在与网站其余部分相同的 EC2 实例上本地时,此查询(以及我认为有相关问题的其他一些查询)不需要 30 秒。更像是毫秒。
有什么不好看的吗?
SELECT *, chv_images.image_id FROM chv_images
LEFT JOIN chv_storages ON chv_images.image_storage_id =
chv_storages.storage_id
LEFT JOIN chv_users ON chv_images.image_user_id = chv_users.user_id
LEFT JOIN chv_albums ON chv_images.image_album_id = chv_albums.album_id
LEFT JOIN chv_categories ON chv_images.image_category_id =
chv_categories.category_id
LEFT JOIN chv_meta ON chv_images.image_id = chv_meta.image_id
LEFT JOIN chv_likes ON chv_likes.like_content_type = "image" AND
chv_likes.like_content_id = chv_images.image_id AND chv_likes.like_user_id = 1
LEFT JOIN chv_follows ON chv_follows.follow_followed_user_id =
chv_images.image_user_id
LEFT JOIN chv_follows_projects ON
chv_follows_projects.follows_project_project_id =
chv_images.image_project_id LEFT JOIN chv_projects ON
chv_projects.project_id = follows_project_project_id WHERE
chv_follows.follow_user_id='1' OR (follows_project_user_id = 1 AND
chv_projects.project_privacy = "public" AND
chv_projects.project_is_public_upload = 1) GROUP BY chv_images.image_id
ORDER BY chv_images.image_id DESC
LIMIT 0,15
And this is what EXPLAIN shows:
谢谢
更新:这个查询有同样的问题。它没有 GROUP BY。
SELECT *, chv_images.image_id FROM chv_images
LEFT JOIN chv_storages ON chv_images.image_storage_id =
chv_storages.storage_id
LEFT JOIN chv_users ON chv_images.image_user_id = chv_users.user_id
LEFT JOIN chv_albums ON chv_images.image_album_id = chv_albums.album_id
LEFT JOIN chv_categories ON chv_images.image_category_id =
chv_categories.category_id
LEFT JOIN chv_meta ON chv_images.image_id = chv_meta.image_id
LEFT JOIN chv_likes ON chv_likes.like_content_type = "image" AND
chv_likes.like_content_id = chv_images.image_id AND chv_likes.like_user_id = 1
ORDER BY chv_images.image_id DESC
LIMIT 0,15
【问题讨论】:
-
欢迎来到 Stack Overflow!您可能没有意识到,当您提出查询优化问题时,最好将
SHOW CREATE TABLE的输出包含在查询中的所有表中。这将帮助回答您问题的人了解您使用了哪些数据类型、索引和约束。帮助我们帮助您! -
您好 Bill,SHOW CREATE TABLE 查询出错。 #1064.
-
您是否将表名作为参数提供?见dev.mysql.com/doc/refman/5.7/en/show-create-table.html
-
提供表名时,不会报错,但在phpmyadmin中也不会提供结果。
-
follows_project_user_id在哪个表中?
标签: mysql amazon-web-services relational-database query-optimization innodb