mysql减少了select查询所用的时间

时间:2018-01-10 18:53:01

标签: mysql sql

我有一个包含700000行和400列的表,列id已编入索引,其他列是动态的。

当我给出

select * from table

需要4分钟以上。表是myisam引擎,我尝试增加key_buffer_size,这没什么用。我可以优化哪些其他参数来加快速度

1 个答案:

答案 0 :(得分:5)

运行查询的最大问题是填充响应。无论表格下​​面的基本效率是什么,即使只有很少的字段有数据,你将在表格中每行返回400个单元格记录 - 因此,你必须发送280M单元格在4分钟内,这意味着~120个细胞/秒。

key_buffer_size将不执行任何操作,因为您只是流式传输您的表(.MYD)文件,该文件未缓存在密钥缓存中,并且只有OS缓冲区。

所以,如果你想让它更快,你可能想要:

  • 通过不读*来减少您读取的列数,但指定单个列
  • 减少表格中的列数
  • 阅读更少的行

如果您不想要上述任何一项并希望您的工作量更快,则必须同时进行阅读。

如果您通常不按列的值过滤/索引,可以将它们放在以任何其他方式打包的BLOB字段中(Thrift,Protobufs,JSON等),这样就不会读取该数据导致疯狂的协议开销,你将能够更快地读取你的表。