gpt4 book ai didi

mysql - 可以使这个 SQL 查询更快吗?

转载 作者:行者123 更新时间:2023-11-29 01:04:30 25 4
gpt4 key购买 nike

只是好奇是否有可能使这个查询更快?或者是否还有其他更好的类似查询?

SELECT id,source FROM posts
WHERE id = ANY(SELECT image_id FROM `post_tags` WHERE tag_id = (SELECT id FROM `tags` WHERE tag = _utf8 '$TAG' collate utf8_bin))
AND posts.exists = 'n'
ORDER BY posts.ratecount DESC
LIMIT 0,100

不使用:

  AND posts.exists = 'n'
ORDER BY posts.ratecount
DESC LIMIT 0,100

它加快了对可用级别的查询速度,但我正在做的事情有点需要这个。

  • Tags 表具有“tag”和“id”的唯一索引。
  • 标签有 83K 行。
  • Post_tags 具有“image_id”、“tag_id”的唯一索引。也是每个的正常索引。
  • Post_tags 有 471K 行。
  • 帖子具有“id”的唯一索引。也是“exists”和“ratecount”的正常索引。
  • 帖子表有大约 110 万行。

最佳答案

您的 TAG 表是什么样的?它是否只包含 ID 和 TAG 字段?我会在 TAG(TAG, ID) 上创建一个唯一索引所以最里面的查询只搜索一个索引。

POST_TAGS 表呢?它只是 TAG_ID 和 IMAGE_ID 的组合吗?同样,我会在 POST_TAGS(IMAGE_ID, TAG_ID) 上创建一个唯一索引.

请注意索引中字段的顺序很重要,索引在 POST_TAGS(TAG_ID, IMAGE_ID) 上与 POST_TAGS(IMAGE_ID, TAG_ID) 上的索引有很大不同在解析计划中使用。

并且在 POSTS 表中有一个关于 POSTS(ID, POSTS, RATEACCOUNT) 的唯一索引可以提供帮助,(我知道它是一个冗余索引,并且会在 INSERT、UPDATE 和 DELETE 上产生额外的成本,但它会在这个查询中帮助你)。

顺便说一句,在内部查询中使用 JOIN 可能会提高性能,只需检查一下即可。

关于mysql - 可以使这个 SQL 查询更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10169111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com