为什么或如何解决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结果。
答案 0 :(得分:7)
尝试将blob拆分为单独的表。
例如,您可以有一个包含xxx
和id
列的表name
,以及包含xxx_data
和{{列的另一个表id
1}}。如果您只想要名称,则根本不需要查询data
表;如果您同时需要名称和数据,则可以使用共享主键xxx_data
将表连接在一起:
id
有关更多信息和优化建议,请参阅例如10 tips for optimizing MySQL queries