`
Robinson
  • 浏览: 91218 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

mysql query count sql 效能调优记录(-)

    博客分类:
  • DB
阅读更多

count字段带来的低效sql

 

一、大概过程:

  1.  set profiling=1;

mysql> select  com_id ,company.name,count(company_albums.id) as albums_count  from company_albums ,company  where company_albums.com_id=company.id group by company.name order by albums_count desc limit 30;

+--------+-----------------------+--------------+
| com_id | name                  | albums_count |
+--------+-----------------------+--------------+
.........


30 rows in set (5.44 sec)

 

3.mysql> explain select  com_id ,company.name,count(company_albums.id) as albums_count  from company_albums ,company  where company_albums.com_id=company.id group by company.name order by albums_count desc limit 30;
+----+-------------+----------------+--------+---------------+---------+---------+------------------------------------+-------+---------------------------------+
| id | select_type | table          | type   | possible_keys | key     | key_len | ref                                | rows  | Extra                           |
+----+-------------+----------------+--------+---------------+---------+---------+------------------------------------+-------+---------------------------------+
|  1 | SIMPLE      | company_albums | ALL    | com_idx       | NULL    | NULL    | NULL                               | 72441 | Using temporary; Using filesort |
|  1 | SIMPLE      | company        | eq_ref | PRIMARY       | PRIMARY | 4       | test_01.company_albums.com_id |     1 |                                 |
+----+-------------+----------------+--------+---------------+---------+---------+------------------------------------+-------+---------------------------------+
2 rows in set (0.00 sec)

 

 

4。

mysql> show profiles;

 

mysql> show profiles;
+----------+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Query_ID | Duration   | Query                                                                                                                                                                                                                            |
+----------+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+                                                                                                                                                                                                               |
|       63 | 5.43254700 | select  com_id ,company.name,count(company_albums.id) as albums_count  from company_albums ,company  where company_albums.com_id=company.id group by company.name order by albums_count desc limit 30                            |
|       65 | 0.00039400 | explain select  com_id ,company.name,count(company_albums.id) as albums_count  from company_albums ,company  where company_albums.com_id=company.id group by company.name order by albums_count desc limit 30                    |
+----------+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

 

mysql> show profile cpu ,block io for query 63;
+--------------------------------+----------+----------+------------+--------------+---------------+
| Status                         | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
+--------------------------------+----------+----------+------------+--------------+---------------+
| starting                       | 0.000036 | 0.000000 |   0.000000 |            0 |             0 |
| checking query cache for query | 0.000104 | 0.000000 |   0.000000 |            0 |             0 |
| Opening tables                 | 0.000019 | 0.000000 |   0.000000 |            0 |             0 |
| System lock                    | 0.000009 | 0.000000 |   0.000000 |            0 |             0 |
| Table lock                     | 0.000039 | 0.000000 |   0.000000 |            0 |             0 |
| init                           | 0.000034 | 0.000000 |   0.000000 |            0 |             0 |
| optimizing                     | 0.000013 | 0.000000 |   0.000000 |            0 |             0 |
| statistics                     | 0.000039 | 0.000000 |   0.000000 |            0 |             0 |
| preparing                      | 0.000018 | 0.000000 |   0.000000 |            0 |             0 |
| Creating tmp table             | 0.001009 | 0.000000 |   0.000000 |            0 |             0 |
| executing                      | 0.000017 | 0.000000 |   0.000000 |            0 |             0 |
| Copying to tmp table           | 5.428130 | 1.916120 |   5.116320 |              0 |             0 |
| Sorting result                 | 0.001783 | 0.012001 |   0.000000 |            0 |             0 |
| Sending data                   | 0.000074 | 0.004000 |   0.000000 |            0 |             0 |
| end                            | 0.000006 | 0.000000 |   0.000000 |            0 |             0 |
| removing tmp table             | 0.000727 | 0.000000 |   0.000000 |            0 |             0 |
| end                            | 0.000016 | 0.000000 |   0.000000 |            0 |             0 |
| query end                      | 0.000006 | 0.000000 |   0.000000 |            0 |             0 |
| freeing items                  | 0.000050 | 0.000000 |   0.000000 |            0 |             0 |
| storing result in query cache  | 0.000403 | 0.000000 |   0.000000 |            0 |             0 |
| logging slow query             | 0.000008 | 0.000000 |   0.000000 |            0 |             0 |
| cleaning up                    | 0.000007 | 0.000000 |   0.000000 |            0 |             0 |
+--------------------------------+----------+----------+------------+--------------+---------------+
22 rows in set (0.00 sec)

 

二、问题总结:

通过以上company_albums | ALL    | com_idx  综合得知全表扫描了,试着分析和调整

 

mysql> explain select  com_id ,company.name,count(company_albums.name) as albums_count  from company_albums ,company  where company_albums.com_id=company.id group by company.name order by albums_count desc limit 30  ;
+----+-------------+----------------+--------+---------------+---------+---------+------------------------------------+-------+---------------------------------+
| id | select_type | table          | type   | possible_keys | key     | key_len | ref                                | rows  | Extra                           |
+----+-------------+----------------+--------+---------------+---------+---------+------------------------------------+-------+---------------------------------+
|  1 | SIMPLE      | company_albums | ALL     | com_idx       | NULL    | NULL    | NULL                               | 72441 | Using temporary; Using filesort |
1 | SIMPLE      | company        | eq_ref | PRIMARY        | PRIMARY | 4       | test_01.company_albums.com_id |     1 |                                 |
+----+-------------+----------------+--------+---------------+---------+---------+------------------------------------+-------+---------------------------------+
2 rows in set (0.00 sec)

mysql> explain select  com_id ,company.name,count(*) as albums_count   from company_albums ,company  where company_albums.com_id=company.id group by company.name order by albums_count desc limit 30  ;
+----+-------------+----------------+-------+---------------+---------+---------+-------------------------+------+---------------------------------+
| id | select_type | table          | type  | possible_keys | key     | key_len | ref                     | rows | Extra                           |
+----+-------------+----------------+-------+---------------+---------+---------+-------------------------+------+---------------------------------+
|  1 | SIMPLE      | company        | index | PRIMARY        | name    | 767     | NULL                    |    1 | Using temporary; Using filesort |
|  1 | SIMPLE      | company_albums | ref   | com_idx        | com_idx |       | test_01.company.id |  108 | Using index                     |
+----+-------------+----------------+-------+---------------+---------+---------+-------------------------+------+---------------------------------+
2 rows in set (0.00 sec)

 

mysql> select  com_id ,company.name,count(*) as albums_count  from company_albums ,company  where company_albums.com_id=company.id group by company.name order by albums_count desc limit 31;
+--------+-----------------------+--------------+
| com_id | name                  | albums_count |
+--------+-----------------------+--------------+
--------------------

--------------------

31 rows in set (0.09 sec)

 

三、结论

现在优化后只需要(0.09 sec)了,写sql的时候尽量多思考和谨慎,频繁查询的更要仔细

 

0
0
分享到:
评论

相关推荐

    《数据库性能调优--原理与技术》

    还有数据库管理工具,如MySQL Workbench或Oracle SQL Developer,它们提供了丰富的功能,包括数据库设计、数据导入导出、备份恢复以及性能调优等。 文件"数据库管理系统资源的生产者-消费者层次结构.vsd"可能是一个...

    数据库性能调优--原理与技术.rar

    以上这些只是数据库性能调优的部分内容,实际操作中还需要结合具体的数据库管理系统(如MySQL、Oracle、SQL Server等)和业务需求来进行细致的调整。通过对这些原理和技术的深入理解和应用,可以有效地提升数据库...

    数据库性能调优--原理与技术

    例如,MySQL自带的慢查询日志功能可以帮助开发者发现执行时间较长的SQL语句;Percona Toolkit则提供了一系列用于数据库性能分析和管理的实用工具。 #### 四、结论 《数据库性能调优——原理与技术》这本书全面系统...

    mysql性能调优和架构设计--阿里软件的实战

    - 在进行MySQL性能调优时,首先要从SQL语句入手,通过合理的索引设计、避免全表扫描、使用覆盖索引等方法来提高查询效率。 - **2.2.2 参数配置调整** - MySQL的运行参数对性能有着直接影响,例如设置合适的缓冲池...

    mysql性能调优与架构设计--全册 .rar_SPF7_mysql 性能调优_架构优化

    综上所述,MySQL性能调优与架构设计涉及的方面广泛且深入,涵盖SQL优化、索引策略、架构设计、存储引擎选择、内存配置、并发控制等多个层面。通过学习和实践,可以有效地提升MySQL数据库在大数据量环境下的处理能力...

    flink-sql-connector-mysql-cdc-1.2.0.jar

    flink cdc mysql jar包,2021年最新版

    mysql面试题-mysql经典面试题目-数据库的基本概念-SQL语法-事务处理-索引优化-性能调优-mysql-面试题目

    【MySQL面试题】在面试MySQL相关的职位时,面试官可能会问到一系列关于数据库基础、SQL语法、事务处理、索引优化以及性能调优的问题。以下是一些可能的面试重点: 1. **数据库基本概念**: - 数据库是用于存储和...

    性能调优专题 -Mysql索引优化与底层数据结构深入剖析

    性能调优专题_-Mysql索引优化与底层数据结构深入剖析

    mysql-connector-java-5.1.7-bin.jar

    "mysql-connector-java-5.1.7-bin.jar" 文件就是这个桥梁,它是一个Java归档(JAR)文件,包含了MySQL JDBC驱动的所有必要组件。 MySQL JDBC驱动,也被称为MySQL Connector/J,允许Java应用程序通过遵循JDBC API来...

    MySQL性能调优与架构设计--全册.pdf

    MySQL性能调优与架构设计--全册,通往Mysql高手之路的良好选择阅读书籍。

    mysql-connector-java-3.0.16-ga-bin.jar

    "mysql-connector-java-3.0.16-ga-bin.jar" 是这个特定版本的驱动程序,用于与MySQL 3.x至5.x版本兼容。 该驱动程序的主要功能包括: 1. **连接建立**:通过提供JDBC URL、用户名和密码,Java应用程序可以使用`...

    mysql-connector-java-5.1.40-bin.jar连接器

    在这个特定的版本——mysql-connector-java-5.1.40-bin.jar中,我们找到了这个连接器的5.1系列的一个稳定版本。 首先,让我们了解JDBC的作用。JDBC是Sun Microsystems(现为Oracle公司)为Java编程语言设计的一套...

    learn-sql-the-hard-way-笨方法学sql

    - 面向对象的SQL特性,如Oracle的PL/SQL或MySQL的存储过程 通过这个课程,读者将不仅学会SQL的基础语法,还能掌握处理复杂查询、优化数据库性能以及设计高效数据库结构的技能。实践是学习SQL的关键,这本书通过...

    mysql-connector-java-gpl-5.1.36

    "mysql-connector-java-gpl-5.1.36"是MySQL Connector/J的一个特定版本,发布于GPL(GNU General Public License)许可下,意味着它是开源且可自由分发的。 MySQL Connector/J 5.1.36是针对MySQL 5.1系列数据库...

Global site tag (gtag.js) - Google Analytics