当在查询中未使用字段时,MySQL InnoDB表中的Text字段的大小是否会影响性能

时间:2011-10-21 15:05:27

标签: mysql innodb

我有一个大约500 000行的InnoDB表正在增长,我正在努力提高选择查询性能。

目前该表大约2GB,其中大部分来自存储相当多xml数据的文本字段。此xml数据不会经常读取,大多数查询都不会选择它。

是否有可能将这些数据移动到一个单独的表中,通过允许更多行一次保存在服务器有限的内存中来加速查询?

1 个答案:

答案 0 :(得分:2)

如果表是InnoDB并且您没有在SELECT中指定文本字段,那么您应该没问题。但是,您应该确保主键尽可能小(它位于gen_clust_index 中)。 Keep in mind that InnoDB performs a clustered index lookup with every query, regardless of non-Indexed Lookups, Indexed Lookups, or Primary Key Lookups

尽管如此,您提出此问题的事实表明,仍然需要考虑相反的结果:将会有一些查询在结果集中包含文本字段。

我会确定以下内容: MySQL数据包,InnoDB日志文件和InnoDB日志缓冲区的大小正确。为什么要关注这些设置? Rows of Data must pass through these structures. Make sure that max_allowed_packet is large enough to hold the biggest text field you have in the database at least 10 times. Same goes with InnoDB Log Files and the InnoDB Log Buffer