【问题标题】:optimization of query in mysqlmysql中查询的优化
【发布时间】:2018-07-15 05:05:30
【问题描述】:

在我的生产数据库性能问题。

我的 sql 查询执行时间很长,所以如何优化以下 mysql 查询。

select sum(distributor_earning) as col_0_0_, sum(distributor_share) as col_1_0_ 
from my_transaction mytransac0_ 
cross join del_transaction deltran1_ 
cross join user user3_ 
where mytransac0_.del_transaction_id=deltran1_.id and deltran1_.agent_parent_id=user3_.id and deltran1_.trx_status=4 and user3_.username='xyz';

它给出以下输出

+-----------+-----------+
| col_0_0_  | col_1_0_  |
+-----------+-----------+
| 579239.27 | 630557.77 |
+-----------+-----------+

一组中的 1 行(15.14 秒)

我有超过 10 万条记录。

在 del_transaction_id 中建立条件索引的地方

【问题讨论】:

  • 猜测“十万条记录”意味着您有 10 万条记录。请不要使用印度语。

标签: mysql


【解决方案1】:

首先,您应该将WHERE 子句替换为ON 子句。

select sum(distributor_earning) as col_0_0_, sum(distributor_share) as col_1_0_ 
from my_transaction mytransac0_ 
cross join del_transaction deltran1_ ON mytransac0_.del_transaction_id=deltran1_.id AND deltran1_.trx_status=4
cross join user user3_ ON deltran1_.agent_parent_id=user3_.id AND user3_.username='xyz';

更多关于WHEREON区别的详细信息:MySQL join with where clause

其次,您最好在此查询所涉及的列上创建索引。

完成这两个步骤后,它会运行得更快。

【讨论】:

    【解决方案2】:

    创建视图以提高性能

    参考Is a view faster than a simple query?

    【讨论】:

      【解决方案3】:

      你有没有尝试过 sql 索引? 在你的 mysql 上试试这个查询

      CREATE INDEX INDEX_FAST_2
      ON user(id, username);
      

      成功后再次尝试运行您的查询。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-22
        • 2011-07-07
        • 2018-12-21
        • 2010-12-15
        • 2011-11-04
        相关资源
        最近更新 更多