MySQL SELECT非常慢,因为LONGBLOB

时间:2012-01-16 12:14:26

标签: mysql performance

为什么或如何解决mysql上的问题。

table xxx
-> id primary key
-> name varchar 255
-> data longblob

当我向这个表存储100个文件时,每个100MB,该表将有10GB

然后尝试选择任何行...它需要很长时间

SELECT name FROM xxx WHERE id = 50 LIMIT 1;

需要大约8秒

我的问题可能在于,mysql在返回name之前读取整行,这只是255个字符...所以当我想列出100个文件的名称时,mysql读取10 GB并返回大约2个KB结果。

1 个答案:

答案 0 :(得分:7)

尝试将blob拆分为单独的表。

例如,您可以有一个包含xxxid列的表name,以及包含xxx_data和{{列的另一个表id 1}}。如果您只想要名称,则根本不需要查询data表;如果您同时需要名称和数据,则可以使用共享主键xxx_data将表连接在一起:

id

有关更多信息和优化建议,请参阅例如10 tips for optimizing MySQL queries