含有blob字段的表查询特别慢,怎么优化SQL?
数据库:mysql 5.0
首先说明,数据表的结构已经不允许调整了。
表中一共十来个字段,其中有一个是longblob类型的,现在发现,如果这个表的longblob类型存储的数据很多的话,则对这个表的查询就特别慢,即使不查询longblob字段也是如此。
尝试过给需要的字段添加索引,但是效果不是很明显,请问,再数据库结构不能调整的情况下,能否通过优化SQL的方式提高查询速度。
Table: recv_file
Field | Type | pri
---------------------------------
id | int | pri
name | varchar |
time | datetime |
data | longblob |
第一句:select id,name,time from recv_file /*这句很慢,如何优化*/
第二句:select id from recv_file /*这句比较快*/
给 name,time 都添加索引(普通索引 index)后,第一句速度有改善,但仍很慢。
如果把 data 字段中的数据都清空的话,速度就很快了。
请问有没有人能给出个好的优化建议。不允许调整表结构。
[解决办法]
没有什么特别好的办法。不过如果只是针对你的第一句的话。如果你创建一个索引,则速度会比较快。
第一句:select id,name,time from recv_file /*这句很慢,如何优化*/
create index xxxx on recv_file(id,name,time)
表中如果数据多,这种什么WHERE条件都没有的自然会进行全表扫描。索引主要是用于优化 where 这种条件查询。
[解决办法]
longblob太长,导致扫描的页面过多且无效。
建议拆成两个表,拼成视图,视图名与你原来表名一样,这样后面的结构都不用变
了解?
[解决办法]
#1楼 不是让你再建一个索引了吗?
[解决办法]