【问题标题】:How to increase the performance of select query when there is more than 1 million records and growing如何在超过 100 万条记录且不断增长的情况下提高 select 查询的性能
【发布时间】:2013-01-30 05:18:48
【问题描述】:

我有一个表格,它每秒从至少 10 个不同的来源接收数据。

我已将我的表划分为每月基数,每个月我创建一个表并将数据填充到表中。每个表将保存至少 100 万条记录。

我有 6 个字段作为主键并索引了 7 个字段。

我没有更改 MySQL 中的任何其他设置(Ubuntu 附带的默认设置)。

只有两个查询将在表上运行(插入和选择)

我看到数据库使我的应用程序变慢。

有没有办法提高查询的性能。

【问题讨论】:

  • 一个有六个字段的复合主键?哇,你真的应该使用系统密钥。在表上添加太多索引也可能是有害的,您应该将列表缩小到您真正需要的索引。
  • 您现在的查询时间是多少?
  • @jaya 嗨,如果您通过搜索选择数据,您可以使用全文搜索(MATCH AGANIST)............这对你来说会快得多...... ..dev.mysql.com/doc/refman/5.5/en//fulltext-search.html
  • @Ashwin 当我选择多个表时,每个查询需要 3 秒。当我从一个带有主键或索引键的表中选择数据时,它是 0.30 秒。当我选择非主键或非索引键时,它是 2 秒。
  • 6 个主索引字段听起来非常错误。如果您需要帮助,您必须提供更多信息:表架构、您正在执行的确切查询、索引定义。如果必须,您可以匿名,但不要省略任何内容

标签: mysql database select database-performance


【解决方案1】:

您可以尝试optimize your query using an Explain plan,包括index optimizingstatement optimizing,这可能对执行速度有很大影响。

【讨论】:

    【解决方案2】:

    首先,在处理 MySQL 性能时,我们需要知道您使用的是哪个引擎。

    其次,我们需要缩小可能的性能问题。我会说您对 INSERT 访问的问题可能比对 SELECT 的问题更大。因为,事实上,即使 SELECT 查询会更慢,如果查询本身很复杂,INSERT 会经常发生,并可能导致您的系统崩溃(或最终减慢系统速度,这会减慢您的 SELECT结果)。

    因此,为了加快您的 INSERT,我确实建议您只保留您真正需要的索引(通常是 SELECT WHERE 子句中使用的列),这将被证明是一个重大改进。

    至于SELECT本身的优化,不看查询,很难进一步帮助你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-27
      • 2014-07-09
      • 2013-11-02
      • 2016-03-11
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      相关资源
      最近更新 更多