- 浏览: 305659 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (405)
- linux (31)
- java (144)
- mysql (52)
- html (19)
- oracle (8)
- sql (12)
- 无题 (5)
- js (16)
- android (4)
- tomcat (4)
- struts (2)
- spring (12)
- elcipse (2)
- shell (7)
- interview (2)
- redis (6)
- apache (2)
- maven (10)
- mq (6)
- kengen (0)
- windows (3)
- css (1)
- nginx (2)
- google (1)
- zk (1)
- ibm (1)
- git (1)
- mvn (1)
- jms (1)
- uml (1)
最新评论
http://bbs.csdn.net/topics/350208411 没必要给所有的列加上索引. 索引是把双刃剑,有好有坏.给给资料,你参考一下: 1.合理使用索引 索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构。索引的使用要恰到好处,其使用原则如下: ●在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引。 ●在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引。 ●在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就无必要建立索引。如果建立索引不但不会提高查询效率,反而会严重降低更新速度。 ●如果待排序的列有多个,可以在这些列上建立复合索引(compound index)。 ●使用系统工具。如Informix数据库有一个tbcheck工具,可以在可疑的索引上进行检查。在一些数据库服务器上,索引可能失效或者因为频繁操作而使得读取效率降低,如果一个使用索引的查询不明不白地慢下来,可以试着用tbcheck工具检查索引的完整性,必要时进行修复。另外,当数据库表更新大量数据后,删除并重建索引可以提高查询速度。 (1)在下面两条select语句中: select * from table1 where field1<=10000 and field1>=0; select * from table1 where field1>=0 and field1<=10000; 如果数据表中的数据field1都>=0,则第一条select语句要比第二条select语句效率高的多,因为第二条select语句的第一个条件耗费了大量的系统资源。 第一个原则:在where子句中应把最具限制性的条件放在最前面。 (2)在下面的select语句中: select * from tab where a=… and b=… and c=…; 若有索引index(a,b,c),则where子句中字段的顺序应和索引中字段顺序一致。 第二个原则:where子句中字段的顺序应和索引中字段顺序一致。 以下假设在field1上有唯一索引I1,在field2上有非唯一索引I2。 (3) select field3,field4 from tb where field1='sdf' 快 select * from tb where field1='sdf' 慢, 因为后者在索引扫描后要多一步ROWID表访问。 (4) select field3,field4 from tb where field1>='sdf' 快 select field3,field4 from tb where field1>'sdf' 慢 因为前者可以迅速定位索引。 (5) select field3,field4 from tb where field2 like 'R%' 快 select field3,field4 from tb where field2 like '%R' 慢, 因为后者不使用索引。 (6) 使用函数如: select field3,field4 from tb where upper(field2)='RMN'不使用索引。 如果一个表有两万条记录,建议不使用函数;如果一个表有五万条以上记录,严格禁止使用函数!两万条记录以下没有限制。 (7) 空值不在索引中存储,所以 select field3,field4 from tb where field2 is[not] null不使用索引。 (8) 不等式如 select field3,field4 from tb where field2!='TOM'不使用索引。 相似地, select field3,field4 from tb where field2 not in('M','P')不使用索引。 (9) 多列索引,只有当查询中索引首列被用于条件时,索引才能被使用。 (10) MAX,MIN等函数,如 Select max(field2) from tb使用索引。所以,如果需要对字段取max,min,sum等,应该加索引。 一次只使用一个聚集函数,如: select “min”=min(field1), “max”=max(field1) from tb 不如:select “min”=(select min(field1) from tb) , “max”=(select max(field1) from tb) (11) 重复值过多的索引不会被查询优化器使用。而且因为建了索引,修改该字段值时还要修改索引,所以更新该字段的操作比没有索引更慢。 (12) 索引值过大(如在一个char(40)的字段上建索引),会造成大量的I/O开销(甚至会超过表扫描的I/O开销)。因此,尽量使用整数索引。 Sp_estspace可以计算表和索引的开销。 (13) 对于多列索引,order by的顺序必须和索引的字段顺序一致。 (14) 在sybase中,如果order by的字段组成一个簇索引,那么无须做order by。记录的排列顺序是与簇索引一致的。
发表评论
-
Linux安装MySQL
2016-12-28 10:26 714http://blog.csdn.net/wb96a100 ... -
修改MYSQL 时区
2016-12-06 19:06 684#http://dev.mysql.com/doc/ref ... -
MySQL HA
2016-01-12 16:15 332今天被问到MYSQL HA,只回答了个主从,但感觉貌似搞I ... -
MYSQL排查问题
2015-12-22 15:45 574... -
MYSQL
2015-12-21 16:56 5721, 查看MySQL服务器配置信息 mysql&g ... -
mysql启动脚本
2015-11-20 09:34 681要想从命令行启动mysqld服务器,你应当启动控制台窗口( ... -
MYSQL
2015-11-02 23:04 544-- 当前最大连接数 SHOW STATUS LIK ... -
MySQL慢查询分析与监控
2015-09-15 17:25 1587https://github.com/box/Anemom ... -
MySQL高并发
2015-09-09 12:08 553MySQL的优化我分为三个部分,一是服务器物理硬件的优化, ... -
MySQL Debug
2015-09-09 11:07 710http://my.oschina.net/zhuguow ... -
MySQL隐式转换
2015-08-27 17:30 619MySQL int转换成varchar引发的慢查询 ht ... -
查询MYSQL当前连接数
2015-07-29 11:48 12848SHOW PROCESSLIST; SHOW FULL ... -
mysql事务处理和锁机制
2015-06-18 16:33 5831.3.如何避免锁的资源竞争 1 )让 SELECT ... -
MYSQL高并发优化
2015-03-26 15:54 495http://www.cnblogs.com/chuncn ... -
数据库分库分表
2015-03-23 23:08 741http://blog.csdn.net/column/d ... -
INNODB事务模型
2015-03-23 20:15 547http://blog.csdn.net/chen7771 ... -
MySQL
2015-03-23 19:39 514http://dev.mysql.com/doc/refm ... -
MVCC
2015-03-23 15:40 372http://hedengcheng.com/?p=844 ... -
Script
2015-03-10 21:15 0/* SQLyog v10.2 MySQL - 5. ... -
MySQL 查看约束,增添约束,删除约束
2015-03-10 16:27 827http://www.educity.cn/wenda/5 ...
相关推荐
Mysql索引优化实战二 本文档主要介绍了Mysql索引优化的实战经验,着重于分页查询优化和Join关联查询优化。 一、分页查询优化 在实际业务系统中,分页功能是非常常见的,对于大表的分页查询,执行效率往往非常低。...
MySQL索引优化是数据库性能提升的关键环节,本篇主要探讨了几个关于MySQL索引使用和优化的重要知识点。 首先,创建了一个名为`employees`的员工记录表,其中包含`id`(主键)、`name`、`age`、`position`和`hire_...
MySQL索引优化是数据库性能提升的关键技术之一,尤其在处理大量数据时,高效索引能够显著加快查询速度,降低服务器负载。本课件主要聚焦于MySQL数据库的索引原理、优化策略以及相关存储过程和触发器的应用。 首先,...
关于mysql索引一些优化介绍与创建原则,还有对order by排序的算法的介绍等等
Mysql索引优化案例 在对数据库进行操作时,尤其是在处理包含大量数据的表时,查询的性能问题是一个常见且重要的话题。在实际工作中,对于Mysql数据库进行索引优化是提高查询效率、减少查询时间的重要手段。本案例将...
"Mysql索引优化解决方案" MySQL索引是帮助MySQL高效获取数据的数据结构。MySQL在存储数据之外,还维护着满足特定查找算法的数据结构,这些数据结构以某种引用(指向)表中的数据,这样我们就可以通过数据结构上实现...
mysql索引优化思维导图
### MySQL的索引优化 #### 一、索引的基本概念 索引是在数据库表中用于提高数据检索效率的重要工具。简单来说,索引就像是图书的目录页,可以帮助用户快速定位到所需的信息,而无需逐页查找。对于MySQL而言,所有...
MySQL索引优化是数据库性能提升的关键之一。在深入理解索引优化的过程中,我们需要关注几个核心概念,如索引类型、键长度(key_len)、参考值(ref)以及全表扫描(type=ALL)和文件排序(Using filesort)。 首先...
本资料“Mysql索引优化实战”旨在深入探讨如何通过有效的索引策略提升MySQL数据库的查询性能。 首先,我们需要理解索引的基本概念。在数据库中,索引就像书的目录,它能帮助数据库系统快速定位到数据,而无需遍历...
本资料包"mysql索引优化.rar"聚焦于MySQL的索引优化,旨在帮助你理解和掌握如何有效利用索引来提高数据库的运行效率。以下将详细介绍关于MySQL索引的知识点: 1. **索引类型** - **B-Tree索引**:最常见的索引类型...
在“04-VIP-Mysql索引优化实战一”这个主题中,我们将深入探讨MySQL的索引原理、常见问题以及优化策略。 首先,了解索引的基本概念至关重要。索引是一种特殊的数据结构,用于加速数据检索。在MySQL中,B-Tree是最...
【MySQL索引优化详解】 MySQL索引优化是提升数据库性能的关键环节,通过合理设计和使用索引,可以显著加快查询速度,减少数据访问的时间。在MySQL中,索引是一种特殊的数据结构,允许数据库快速找到存储在表中的...
MySQL索引优化是提高数据库查询效率的关键,尤其在大数据量的场景下,合理地创建和使用索引可以显著提升查询速度。本文档主要探讨了如何选择适合的数据类型、选择合适的标识符以及对索引的基本原理和类型进行了介绍...
mysql索引的优化方案技术分享,珍贵资料收藏下
mysql索引优化
### MySQL索引优化实战知识点详解 #### 一、创建示例表 首先,我们通过一个具体的例子来了解MySQL中的索引及其优化方法。在给定的内容中,展示了一个名为`employees`的表的创建语句: ```sql CREATE TABLE `...
本文将围绕“VIP-mysql索引优化实战一(1)1”这个主题,结合给出的示例表`employees`,讨论如何选择合适的索引以及MySQL如何决定使用哪个索引。 首先,我们来看创建的`employees`表结构,包含`id`(主键)、`name`、...