【问题标题】:"order by" taking too much time in mysql“order by”在mysql中花费了太多时间
【发布时间】:2009-07-15 11:07:13
【问题描述】:

查询中的“order by”在 MySQL 中花费了很多时间。 SHOW PROFILES 显示排序过程所花费的时间。是否有任何设置/解决方法可以减少排序时间?

【问题讨论】:

  • 需要多少时间,您预计需要多少时间?
  • 哇这么多答案,但建议同样的事情......
  • 它需要 3 到 4 秒,我认为这太多了

标签: mysql


【解决方案1】:

如果您在订购的字段上没有索引,请添加一个:

“在某些情况下,MySQL 可以使用索引来满足 ORDER BY 子句,而无需进行任何额外的排序。”

编辑:(来自 MySQL 文档中的 section on ORDER BY optimization。)

【讨论】:

  • 我正在使用索引,但 MySQL 仍然没有使用文件排序
【解决方案2】:

为您排序的字段添加适当的索引应该可以解决问题。

【讨论】:

    【解决方案3】:

    您可以通过在您希望结果排序的列上添加索引来提高返回排序结果的速度。

    【讨论】:

      【解决方案4】:
      ALTER TABLE `tablename` ADD INDEX `indexname` (`columnname`);
      

      一般情况下,indexname 与 columnname 相同。

      【讨论】:

        【解决方案5】:

        能否告诉我以下 2 个命令的输出: 显示创建表 tbl_name 解释“您的选择查询”

        如果MySQL认为几乎所有行都需要检查,除非有覆盖索引,否则它不会使用索引。由于每个表只使用一个索引,因此请尝试按属于该索引的列(如果它正在使用)进行排序。

        【讨论】:

          【解决方案6】:

          查询运行缓慢的原因可能是表没有建立索引;如果是这种情况,请创建一个合适的索引。

          【讨论】:

            【解决方案7】:

            您可能需要为要运行 order by 的列建立索引。你可以运行sql 'ALTER TABLE yourTableNameADD INDEXColumnName (ColumnName);'

            我有同样的问题,并通过这个程序克服了。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2021-01-07
              • 1970-01-01
              • 2012-06-04
              • 2017-02-15
              • 2020-07-23
              • 2013-07-11
              • 2014-01-13
              相关资源
              最近更新 更多