繁体   English   中英

Maria DB - 索引帮助

[英]Maria DB - Help on Index

我有以下查询

Select main.display_column, lookup.lookup_column from
main
inner join lookup on main.main_column = lookup.lookup_column
where main.another_column = 123;

在 main.another_column 和 lookup.lookup_column 上创建索引是否足够

或 main.main_column 上的索引也需要提高性能?

不, main.main_column 上的索引不是必需的,也不会被使用。

设置所有三个索引,然后explain select rest-of-your-query 它将只显示正在使用的两个索引。

如果你有这样的事情:

select main.display_column, lookup.lookup_column
from main
inner join lookup on main.main_column = lookup.lookup_column
where main.another_column >= 123
order by lookup.primarykey

优化器可能会选择反转连接并使用 main.main_column 上的索引,以使记录的顺序正确,但在您的简单情况下,这不应该发生。

正如您所问,这些是最佳索引:

main:    INDEX(another_column)   -- takes care of the WHERE
lookup:  INDEX(lookup_column)    -- takes care of the JOIN

可选(可能会提高一点速度):

main:  INDEX(another_column, main_column, display_column)  -- "covering"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM