gpt4 book ai didi

Mysql- "SELECT field "确实将内存填充为 "SELECT * "吗? - 因诺数据库

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

我今天在想这个问题......

例如,如果我有一个包含 20 个字段、100K 行的 innodb 表......内存如何填充这两个不同的查询:

1) SELECT field1, field2, field3 from table where field10 = '1';

2) Select * from table where field10 = '1';

在这两种情况下,内存是否都填满了整个表?innodb_buffer_pool填满时如何考虑where?

最佳答案

如果您的field10已建立索引,InnoDB只需要读取索引即可查找具有该值的行。然后它需要读取包含这些行的表的页面。它不需要读取整个表。

这就是索引的好处。

如果索引还包含field1field2field3,那么InnoDB可以跳过从表中读取页面。它可以仅从索引中获取所需的值。

ALTER TABLE `table` ADD KEY (field10, field1, field2, field3);

有点像当您在电话簿中查找某人的名字并发现他们的地址是“额外”字段时。这本书不按地址排序,但您可以免费获得。

当您从索引中获取所需的列时,这称为覆盖索引,并且查询不必从表中读取整行。

您可能会喜欢我的演示https://www.slideshare.net/billkarwin/how-to-design-indexes-really

关于Mysql- "SELECT field "确实将内存填充为 "SELECT * "吗? - 因诺数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43480080/

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