首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中,不能为连接内存目的加载文本字段吗?

在MySQL中,不能为连接内存目的加载文本字段吗?
EN

Database Administration用户
提问于 2021-03-30 17:50:46
回答 2查看 109关注 0票数 1

我想为一个表使用许多文本字段,但是它们可能非常大,因此对这个表的行执行复杂的操作,比如与大表的联接可能变得棘手或非常慢。

我知道文本字段没有存储在内存中,因此它们禁止缓存它们的行,因此我希望关闭从磁盘加载的文本字段,使此表的行保持在快速内存中,并允许在必要时加载文本“手动加载”。

这个是可能的吗?

EN

回答 2

Database Administration用户

发布于 2021-03-30 18:22:19

也许吧。也就是说,没有设置来实现这一点;但是,重写查询可以实现这一点。

请向我们展示导致这种情况的查询。同时,以下是一些可能的例子:

  • SELECT * ...加载所有文本列。如果不需要所有的列,请详细说明所需的内容,而不是使用*
  • SELECT big_text FROM t WHERE ... ORDER BY ... LIMIT 10 --在某些情况下,优化器可以专注于所需的10行,并且只加载那些行的big_text。对于其他情况,在发现所需的10行之前,它会加载“所有”行的big_text。这通常是可以解决的。但我需要你的SQL来说服你。
  • JOIN是另一种情况,在这种情况下,前一项可能或不显示其丑陋的头部。
票数 1
EN

Database Administration用户

发布于 2021-03-30 23:32:01

将文本列移动到单独的表中。这个新表将具有与原始表相同的键。当新行到达时,用相同的键值将小列写入原始表,将文本列写入新表。这种技术被称为垂直分区。如果需要,可以有多个新表,每个表都包含一个或多个文本列。

使用原始表执行复杂查询。仅在需要时才使用此结果集连接到包含文本的表。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/288977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档