gpt4 book ai didi

mysql - MySQL 创建临时表时包含哪些数据?

转载 作者:可可西里 更新时间:2023-11-01 07:41:43 25 4
gpt4 key购买 nike

我一直在阅读有关每当 MySQL 生成临时表时将 VARCHAR 字段转换为 CHAR 字段的信息。

如果我有下表...

  • 超过 10 万行
  • 十几个 VARCHAR 列设置为实际长度(例如,电话号码为 10 个)
  • 5 个 VARCHAR 列设置为 15K(长度可能短至 20,但更糟的情况下可达 15K)

而且,假设我有这个查询...

  • 返回包括 VARCHAR 在内的多个列
  • JOIN 与其他六个表(在 VARCHAR 列上)
  • 按日期和数字 ID 对行进行排序(即,在 VARCHAR 列上)
  • 有一个 WHERE 子句包含 VARCHAR 字段
  • 有 12 行的 LIMIT

当MySQL创建临时表时,为了排序和偶尔分组(在某些情况下),临时表中的结果是什么?

例如,表是否仅包含选择要返回的行所必需的列(即在 WHERE 和 ORDER BY 子句中指定的列),然后数据库引擎确定 LIMIT 中的 12 行,然后读取只有那 12 行的数据?或者,临时表中是否包含更大的数据 block (例如,所有可能的行,包括冗长的 VARCHAR 列)?

最佳答案

如果临时表适合memory restrictions , 它是使用 HEAP (Memory engine) 创建的.所有限制均适用。如果它变得太大,服务器会将其转换为 MyISAM磁盘上的临时表。

关于mysql - MySQL 创建临时表时包含哪些数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8293334/

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