mediumblob
与普通列相比,在查找性能方面会导致任何额外的开销吗?
我很清楚它会导致每个插入数据的标准磁盘开销(数据的字节数 + 3 个字节),但是如果我(例如)执行涉及where
语句的查找,并且join
在所有其他列上执行简单与 相比,如果该列不存在mediumblob
,性能会有所不同吗?mediumblob
mediumblob
与普通列相比,在查找性能方面会导致任何额外的开销吗?
我很清楚它会导致每个插入数据的标准磁盘开销(数据的字节数 + 3 个字节),但是如果我(例如)执行涉及where
语句的查找,并且join
在所有其他列上执行简单与 相比,如果该列不存在mediumblob
,性能会有所不同吗?mediumblob
简短的回答:可能不是;)
长答案:
我推荐阅读这篇有趣的博文:
使用 COMPACT 和 REDUNDANT 行格式(在 Innodb 插件之前使用并在 Innodb 插件和 XtraDB 中命名为“Antelope”)Innodb 会尝试将整行放入 Innodb 页面。至少 2 行必须适合每个页面加上一些页面数据,这使得限制约为 8000 字节。如果行完全适合 Innodb 会将其存储在页面上,而不使用外部 blob 存储页面。
在这种情况下,是的,您很可能会看到性能下降。
相反:
当 innodb_file_format 设置为 Barracuda 并使用 ROW_FORMAT=DYNAMIC 或 ROW_FORMAT=COMPRESSED 创建表时,长列值完全离页存储,并且聚集索引记录仅包含指向溢出页的 20 字节指针。
在这种情况下,我预计性能成本是微不足道的,如果有的话。但是,和往常一样,YMMV 和您应该使用您的实际数据集进行测试。