mysql减少了选择查询所花费的时间

标签 mysql sql

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

当我只是给予

select * from table

需要超过 4 分钟。表与 myisam 引擎一起使用,我尝试增加 key_buffer_size 但没有太大帮助。我可以优化哪些其他参数以使其更快

最佳答案

运行查询的最大问题就是简单地填充响应。无论表下的潜在效率如何,即使有数据的字段很少,表中的每一行都会返回 400 个单元格的记录 - 因此,您必须在 4 秒内发送 280M 个单元格分钟,这意味着大约 100 万个单元格/秒。

key_buffer_size 什么都不做,因为您只是流式传输您的表 (.MYD) 文件,该文件未缓存在 key 缓存中,并且仅缓存在操作系统缓冲区中。

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

  • 通过不阅读 * 来减少您阅读的列数,而是指定单独的列
  • 减少表格中的列数
  • 阅读更少的行

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

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

关于mysql减少了选择查询所花费的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48194259/

相关文章:

mysql - 如何使用 cakephp v3.x 绕过 MAX_JOIN_SIZE

php - 如何使用php和mysql显示多个值?

MySQL:如何保持锁定并使其他线程等待尚未发生的插入

sql - 如何加速这个 TSQL 查询?

sql - 什么是数据库 (SQL) 的最佳访问时间?

sql - 如何根据 ' Country Name' 和 'Lat' 生成一个 'Long' 字段 对于一个遍布全局的 unique_Id,在 SNOWFLAKES QUERY 中?

php - OpenCart MySQLi 问题

mysql - 什么限制了 PHP 在超时前执行的 SQL 语句的数量?

mysql - 全文搜索不适用于 mysql 中的 varchar

mysql - 命名异常 : Cannot create resource instance with tomcat7-maven-plugin h2/mysql database