gpt4 book ai didi

mysql - MySQL Select SQL 背后的操作

转载 作者:行者123 更新时间:2023-11-29 03:12:29 33 4
gpt4 key购买 nike

我有一个具有这种结构的 MySQL 表

  • ID [pk, MediumInt]
  • UID [MediumInt]
  • 作者 [TinyText]
  • 标签 [TinyText]
  • 标题 [TinyText]
  • 文字[文字]

当我执行搜索或选择 ID、UID、标签或所有这 3 个时,MySQL 是否也会在内存中加载文本字段? [我没有在 SQL 中指定]

示例->

SQL1-> Select ID,UID,Tags order by Tags
SQL2-> Select ID,UID,Tags where UID=1
SQL3-> Select ID,UID,Tags,Title where UID=1 and Tags=Hello
SQL4-> Select ID,UID,Tags,Title where Tags=Hello

[对于上述查询,MySQL 是否也会在内存中加载 Text 列?]

最佳答案

简短回答:否。

在 MySQL 中,TEXTBLOB 字段存储在行中,因此读取它们需要单独的表查找。所以no MySQL在处理上述查询时不会读取内存中的text字段。
请参阅:http://nicj.net/2011/01/20/mysql-text-vs-varchar-performance

不过,这个查询还有另一个问题,它很慢,因为:

  1. TEXTBLOB 字段不存储在行中,因此 MySQL 需要对每个 TEXT 字段进行单独查找。<
  2. MEMORY 引擎不支持BLOBTEXT 字段,因此如果 MySQL 需要使用临时表来解析查询,它会将中间表存储在磁盘上,从而减慢速度。

建议
不要将 tinytext 用于 AuthorTagsTitle 列。使用 varchar 会更快。
请注意,text 是保留字,因此您需要将字段名称括在反引号 ` 中。

另请参阅:http://dev.mysql.com/doc/refman/5.5/en/blob.html

关于mysql - MySQL Select SQL 背后的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5973911/

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