gpt4 book ai didi

mysql - 如何通过索引加速左连接查询?

转载 作者:行者123 更新时间:2023-11-29 02:55:25 27 4
gpt4 key购买 nike

目前,我在我的应用程序中遇到一些较慢的 MySQL 查询,我想加快速度。不幸的是,我不太确定哪种方法是正确的。

我有以下(虚构的)表:BookPageWord
WordPage 的子级,由 word_page_id
PageBook 的子级,由 page_book id

我已经在 page_book_idword_page_idbook_user_idbook_flag_delete 上有了单独的索引。

SELECT `book`.*, COUNT(word_id) AS `word_amount` FROM `book` 
LEFT JOIN `page` ON page_book_id = book_id
LEFT JOIN `word` ON word_page_id = paragraph_id
WHERE (book_user_id = 1) AND (book_flag_delete IS NULL)
GROUP BY `book_id`
ORDER BY `book_id` ASC LIMIT 100

SELECT COUNT(DISTINCT `book_id`) AS `book_row_count` FROM `book`
LEFT JOIN `page` ON page_book_id = book_id
LEFT JOIN `word` ON word_page_id = page_id
WHERE (book_user_id = 59) AND (book_flag_delete IS NULL)

关于如何加快此类查询的任何想法?是否涉及额外的索引?

最佳答案

在您用于加入的字段上设置索引。

进一步确保它们具有相同的数据类型、编码和排序规则,否则索引也不会被使用。

mysql> EXPLAIN <query>将向您显示实际使用的字段(输出中的 key 列)和可用索引(possible_keys 输出字段)。

关于mysql - 如何通过索引加速左连接查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31164110/

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