gpt4 book ai didi

具有索引澄清的 MySQL 性能

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:44 27 4
gpt4 key购买 nike

假设我有一个 mysql 表,在列 'name' 上有一个索引:

我做这个查询:

select * from name_table where name = 'John';

假设有 5 个结果从一个 100 行的表中返回。

假设我现在插入 100 万个新行,其中没有名为 John 的行,所以表中仍然只有 5 个 John。 select 语句是否会像以前一样快,那么插入所有这些行是否会对索引表的读取速度产生影响?

最佳答案

索引有自己的“表”,当 MySQL 引擎确定查找引用了一个索引列时,查找就发生在这张表上。它本身并不是一个真正的表格,但要点检查出来了。

也就是说,它会慢纳秒,但这不是您应该担心的事情。

更重要的是,关注相关数据的索引,以及 column order ,因为它们对数据库性能有很多的影响。

要了解更多关于幕后发生的事情,请查询EXPLAIN:

EXPLAIN select * from name_table where name = 'John';

注意:除了链接中列出的列顺序之外,在它们的之后设置可变长度列 (VARCHAR) 是一个好(不,很好)的主意固定长度对应项 (CHAR),因为在查找过程中,引擎必须查看行、读取列长度,然后向前跳过查找(请注意,这仅适用于非-indexed columns),或者阅读表声明,知道它总是要查看偏移量为 X 的列。在幕后更复杂,但如果你能将所有固定长度的列移到前面,你会感谢你自己。基本上:

Indexed columns.
Everything Fixed-Length in order according to the link.
Everything Variable-Length in order according to the link.

关于具有索引澄清的 MySQL 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30676855/

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