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

mysql性能调优3--索引相关

阅读更多
注:原创作品,转载请注明出处。

    众所周知,索引可以加快查询的速度,但有的时候你的一个小不注意索引就失效。 本博文结合实例追根究底研究索引。

前置条件:
   为表达效果,请按本人博客“mysql性能调优1”博文往Supan表中插入7000万数据。注意设置innodb_flush_log_at_trx_commit=2,否则插入7000万数据,大概需要耗费你4个小时左右。

实例一:演示索引的告诉查询

  首选不建立supan表的grade字段索引 进行grade字段的查询:
mysql> select * from supan where grade = 1515215;
+--------+---------+---------+
| name   | id      | grade   |
+--------+---------+---------+
| 寮犱笁   | 4535219 | 1515215 |
+--------+---------+---------+
1 row in set ([color=blue]9.17 [/color]sec)


耗时:9.17秒

创建grade字段上的索引:
mysql> create index index_supan_grade on supan(grade);
Query OK, 0 rows affected (1 min 17.03 sec)
Records: 0  Duplicates: 0  Warnings: 0


再次查询
mysql> select * from supan where grade = 1515215;
+--------+---------+---------+
| name   | id      | grade   |
+--------+---------+---------+
| 寮犱笁   | 4535219 | 1515215 |
+--------+---------+---------+
1 row in set (0.09 sec)

创建完索引后,用时仅为0.09秒 效率提升到 9.17 / 0.09 倍


二:索引字段上用表达式失效。
mysql> select * from supan where grade*10 = 256450;
+--------+---------+-------+
| name   | id      | grade |
+--------+---------+-------+
| 寮犱笁   | 1045649 | 25645 |
| 寮犱笁   | 2045649 | 25645 |
| 寮犱笁   | 3045649 | 25645 |
+--------+---------+-------+
3 rows in set (9.11 sec)

耗时9.11,又回到了远古时代,呵呵呵。上面的sql其实可以完全改为下面的高效率sql:
mysql> select * from supan where grade = 256450;
+--------+---------+--------+
| name   | id      | grade  |
+--------+---------+--------+
| 寮犱笁   | 1276454 | 256450 |
| 寮犱笁   | 2276454 | 256450 |
| 寮犱笁   | 3276454 | 256450 |
+--------+---------+--------+
3 rows in set (0.11 sec)
功能完全相同,但效率就是天上地下了,其中缘故你懂得。

三:mysql的索引字段上用聚凑函数,索引不失效。Oracle失效(值得注意)
mysql> select max(grade) from supan;
+------------+
| max(grade) |
+------------+
|    5792149 |
+------------+
1 row in set (0.00 sec)


四:索引对插入的影响

有索引的时候插入记录
mysql> insert into supan(name,grade) values('chenchaoyang',100);
Query OK, 1 row affected (0.09 sec)


删除索引
mysql> drop index index_supan_grade on supan;
Query OK, 0 rows affected (0.55 sec)
Records: 0  Duplicates: 0  Warnings: 0


再次插入数据
mysql> insert into supan(name,grade) values('chenchaoyang',100);
Query OK, 1 row affected (0.04 sec)


可以从两次插入的耗时分析,在索引的时候插入数据,效率比较低下,所以在经常需要插入,更新的表中,尽量少使用索引。
分享到:
评论

相关推荐

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

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

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

    什么是数据库?什么是关系数据库管理系统(RDBMS)? 什么是SQL?列举一些常见的SQL命令。...什么是数据库性能监控和调优工具?列举一些常用的工具。 什么是数据库连接字符串?它的格式和参数有哪些

    MySQL性能调优与架构设计(中文版)

     第6章 影晌MySQL Server性能的相关因素  6.0 引言  6.1 商业需求对性能的影响  6.2 系统架构及实现对性能的影响  6.3 Query语句对系统性能的影响  6.4 Schema设计对系统的性能影响  6.5 硬件环境对...

    mysql性能调优思路1

    mysql性能调优思路定位慢sql语句启动慢查询,mysqldumpslow分析分析慢sql语句explain执行计划分析语句优化创建最合理的索引避免模糊查询=

    MySQL性能调优与架构设计 - 简朝阳.mobi

    4.5、mysql用的是b+树,所有数据都在叶子节点,索引会比较小,常用查询字段建立索引,所有查询尽量在索引中完成 4.6、唯一性太差的字段,不适合建立索引(如状态字段、类型字段),当一条Query返回的数据超过了全表的15%时...

    Mysql性能调优指南.docx

    Mysql配置优化参数说明及优化指南,Mysql性能查看常用命令详解,Mysql索引实现原理分析,Mysql状态参数详解

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    《mysql管理之道:性能调优、高可用与监控》由资深mysql专家撰写,以最新的mysql版本为基础,以构建高性能mysql服务器为核心,从故障诊断、表设计、sql优化、性能参数调优、mydumper逻辑、xtrabackup热备份与恢复、...

    MySQL5.1性能调优与架构设计.mobi

    以MySQL数据库的基础及维护为切入点,重点介绍了MySQL数据库应用系统的性能调优,以及高可用可扩展的架构设计。 ●基础篇介绍了MySQL软件的基础知识、架构组成、存储引擎、安全管理及基本的备份恢复知识 ●性能优化...

    mysql数据库的性能调优方法

    之前介绍了相关mysql的性能调优,针对innodb存储引擎的使用进行性能调优的方法,Jason也留下点Memory。首先当然要提到的是innodb的关键特性:插入缓冲,两次写。  之前介绍了相关mysql的性能调优,针对innodb存储...

    10个MySQL性能调优的方法

    MYSQL 应该是最流行了 WEB 后端数据库。WEB 开发语言最近发展很快,PHP, Ruby, Python, Java 各有特点,虽然 NOSQL 最近越來越多的被提到,但是相信大部分架构师还是会选择 MYSQL 来做数据存储。 MYSQL 如此方便和...

    Java性能调优实战——覆盖80%以上的Java应用调优场景

    开篇词讲怎样才能做好性能调优02讲如何制定性能调优策略04讲慎重使用正则表达式05讲ArrayList还是LinkedList使用不当性能差千倍07讲深入浅出HashMap的设计与优化08讲网络通信优化之IO模型:如何解决高并发下IO瓶颈09...

    MySQL调优技术分享PPT.pptx

    【主要内容】B+树介绍、单表性能调优、多表性能调优以及SQL语句效率对比。 【应用场景】1、B+树作为MySQL索引底层实现的数据结构,需要我们了解其工作机制; 2、从创建表要注意的点以及SQL语句编写的注意点来优化...

    大师级MySQL企业级性能调优

    MySQL企业级性能调优实战,针对MySQL数据库及存储引擎进行拆解,包括了InnoDB存储引擎,MyISAM存储引擎,Memory存储引擎,CSV存储引擎,B+ Tree索引原理等内容。

    MySQL调优:从问题到解决的具体步骤和案例分析

    本文将详细介绍MySQL调优的具体步骤和案例分析,包括发现问题、分析原因、优化方案和示例代码等内容,帮助程序员解决MySQL性能问题。MySQL调优是提高系统性能和响应速度的关键步骤。通过发现问题、分析原因、优化...

    mysql调优视频

    mysql索引原理 索引优化 多表优化 Explain分析 表锁的介绍 失效可以私信我

    高性能MySQL pdf 免费-part1

    的第二版着眼于健壮性、安全性及数据完整性,涵盖了 MySQL性能的细微之处。  《高性能MYSQL》指导你深入MYSQL的高级技术,充分利用MySQL的全部强大能力。你将学到如何设计 MySQL的表、索引、查询以及可以将性能发挥...

    MySQL高性能书籍_第3版_扫描版_1(中文)

    MySQL SQL 优化 性能调优 ,详细介绍了优化MySQL性能的方法,包括索引的深度解析

    MySQL高性能书籍_第3版_扫描版(中文)

    MySQL SQL 优化 性能调优 ,详细介绍了优化MySQL性能的方法,包括索引的深度解析

Global site tag (gtag.js) - Google Analytics