- 浏览: 91218 次
- 性别:
- 来自: 深圳
-
最新评论
-
rmn190:
公司旁边的一个小组直接用QQ建了一个群, 在群里发通知, 开短 ...
所在团队上班时间允许上QQ或者TM吗?对工作的影响有几分呢? -
jimzhao:
对内用rtx,对外用QQ。
经常QQ远程解决客户的问题,不用都 ...
所在团队上班时间允许上QQ或者TM吗?对工作的影响有几分呢? -
Coding.Ghost:
在公司WOW,我表示很佩服...
所在团队上班时间允许上QQ或者TM吗?对工作的影响有几分呢? -
抢街饭:
我们一直用鸽子
所在团队上班时间允许上QQ或者TM吗?对工作的影响有几分呢? -
sinopf:
比较浪费时间,但是现在的客户越来越喜欢在QQ上让远程协助解决问 ...
所在团队上班时间允许上QQ或者TM吗?对工作的影响有几分呢?
count字段带来的低效sql
一、大概过程:
- 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 | 4
| 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的时候尽量多思考和谨慎,频繁查询的更要仔细
发表评论
-
lampp里mysql磁盘满了处理方法
2011-05-14 20:00 1691当使用ampp里mysql磁盘满了,而该磁盘又无法清理时,可以 ... -
mysqldump 导出时排除掉某些表shell脚本
2011-04-13 12:00 1465#!/bin/bash for j in `mysql - ... -
mysql 启动参数
2011-03-24 09:59 9636410 /bin/sh /usr/local/mysql/b ... -
mysql query sql 效能调优记录-排序时最快的取出尽量少的字段且索引字段(三)
2011-01-16 23:38 1164mysql> select company_al ... -
mysql query LIKE '%%' sql 效能调优记录(二)
2011-01-16 23:22 2467对LIKE '%%'这种与不加like的过滤导致sql性能差别 ... -
基础的启动/停止/重启/密码修改MySQL
2010-12-28 10:40 960如何启动/停止/重启MySQL 一、 启动方式 1、使用 ... -
Mysql操作基础,标记一下
2010-12-02 11:48 7491、MySQL 如何导入导出个别需要数据记录? – 先导 ... -
mysql datetime timestamp
2010-11-04 11:42 1037mysql> SELECT FROM_UNIXTIME( ... -
mysql 导入导出字符集问题
2010-10-19 18:38 1724Mysql数据导入导出的时候,注意下是否需要指定字符集,尤其是 ... -
MySQL insert update on dumplicate
2010-09-15 17:40 1263mysql insert的几点操作(DELAYED ... -
MySQL InnoDB表空间重新释放实战
2010-09-08 23:30 4733实战: ------备份DB mysqld ... -
MySQL Innodb表空间不足的处理方法
2010-09-08 19:49 3094官方给出的解决方案: 添加和删除 InnoDB ... -
mysql日志清理
2010-09-08 19:46 1200mysql>SHOW MASTER LOGS; 此命令 ... -
在Windows下MySQL启动与停止方法
2010-09-08 19:06 1126在Windows下MySQL启动与停 ... -
mysql内存管理
2010-09-08 18:05 1177show variables; mysql ... -
MySQL中的mysqldump命令使用详解
2010-09-03 17:57 701MySQL有很多可以导入数据的方法,然而这些只是数据传输中的一 ... -
MySQL的mysqldump工具的基本用法
2010-09-03 17:54 662导出要用到MySQL的mysqldump工具,基本用法 ...
相关推荐
还有数据库管理工具,如MySQL Workbench或Oracle SQL Developer,它们提供了丰富的功能,包括数据库设计、数据导入导出、备份恢复以及性能调优等。 文件"数据库管理系统资源的生产者-消费者层次结构.vsd"可能是一个...
以上这些只是数据库性能调优的部分内容,实际操作中还需要结合具体的数据库管理系统(如MySQL、Oracle、SQL Server等)和业务需求来进行细致的调整。通过对这些原理和技术的深入理解和应用,可以有效地提升数据库...
例如,MySQL自带的慢查询日志功能可以帮助开发者发现执行时间较长的SQL语句;Percona Toolkit则提供了一系列用于数据库性能分析和管理的实用工具。 #### 四、结论 《数据库性能调优——原理与技术》这本书全面系统...
- 在进行MySQL性能调优时,首先要从SQL语句入手,通过合理的索引设计、避免全表扫描、使用覆盖索引等方法来提高查询效率。 - **2.2.2 参数配置调整** - MySQL的运行参数对性能有着直接影响,例如设置合适的缓冲池...
综上所述,MySQL性能调优与架构设计涉及的方面广泛且深入,涵盖SQL优化、索引策略、架构设计、存储引擎选择、内存配置、并发控制等多个层面。通过学习和实践,可以有效地提升MySQL数据库在大数据量环境下的处理能力...
flink cdc mysql jar包,2021年最新版
【MySQL面试题】在面试MySQL相关的职位时,面试官可能会问到一系列关于数据库基础、SQL语法、事务处理、索引优化以及性能调优的问题。以下是一些可能的面试重点: 1. **数据库基本概念**: - 数据库是用于存储和...
性能调优专题_-Mysql索引优化与底层数据结构深入剖析
"mysql-connector-java-5.1.7-bin.jar" 文件就是这个桥梁,它是一个Java归档(JAR)文件,包含了MySQL JDBC驱动的所有必要组件。 MySQL JDBC驱动,也被称为MySQL Connector/J,允许Java应用程序通过遵循JDBC API来...
MySQL性能调优与架构设计--全册,通往Mysql高手之路的良好选择阅读书籍。
"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中,我们找到了这个连接器的5.1系列的一个稳定版本。 首先,让我们了解JDBC的作用。JDBC是Sun Microsystems(现为Oracle公司)为Java编程语言设计的一套...
- 面向对象的SQL特性,如Oracle的PL/SQL或MySQL的存储过程 通过这个课程,读者将不仅学会SQL的基础语法,还能掌握处理复杂查询、优化数据库性能以及设计高效数据库结构的技能。实践是学习SQL的关键,这本书通过...
"mysql-connector-java-gpl-5.1.36"是MySQL Connector/J的一个特定版本,发布于GPL(GNU General Public License)许可下,意味着它是开源且可自由分发的。 MySQL Connector/J 5.1.36是针对MySQL 5.1系列数据库...