数据库调优教程(八) 什么情况下不要使用索引

三、           索引

5.      什么情况下不要使用索引

既然索引是有代价的,那么就不要在不应该使用索引的情况下去使用它。

1)    数据唯一性差的字段不要使用索引

比如性别,只有两种可能数据。意味着索引的二叉树级别少,多是平级。这样的二叉树查找无异于全表扫描。

2)    频繁更新的字段不要使用索引

比如logincount登录次数,频繁变化导致索引也频繁变化,增大数据库工作量,降低效率。

3)    字段不在where语句出现时不要添加索引

只有在where语句出现,mysql才会去使用索引

4)    数据量少的表不要使用索引

使用了改善也不大

时间: 2024-10-10 23:45:28

数据库调优教程(八) 什么情况下不要使用索引的相关文章

数据库调优教程汇总

前段时间帮公司优化数据库,凭着之前所学,一步一步地将学习知识用于实践,总算是将速度蹭上去了,一个原本要执行1分多钟的查询现在只需要3秒. 这两个星期来把自己所学所思及所用加以总结,发表了关于数据库系列的一系列文章,一方面为自己巩固知识,另一方面也给广大同学以一点点参考. 现将这系列文章进行汇总,方便大家查阅. 本套教程共十三讲. 在这系列的教程中,你将会学到 1.    如何一步步地优化数据库 2.    如何把索引的作用发挥的淋漓尽致 3.    如何解决Mysql在like'%xxx%'模糊

数据库调优教程(十三) MySQL数据库其他优化方法

六.           MySQL数据库其他优化方法 最后一章,谈谈前面没有涉及的一些优化方法. 1.      My.ini配置文件 这里只介绍两个最重要的,其他的不过多介绍. 1)    配置 最大连接数 默认为100,建议设为1000 2)   配置 缓存 在my.ini的[mysqld]节点开启查询缓存,配置如下 query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576 2.      使

数据库调优教程(一)前言&慢查询定义

前言 最近帮公司优化数据库,凭着之前所学,一步一步地将学习知识用于实践,总算是将速度蹭上去了,一个原本要执行1分多钟的查询现在只需要3秒. 现把自己所学所思及所用加以总结,一方面为自己巩固知识,另一方面也给广大同学以一点点参考. 本套教程共十三讲. 在这系列的教程中,你将会学到 1.     如何一步步地优化数据库 2.     如何把索引的作用发挥的淋漓尽致 3.     如何解决Mysql在like'%xxx%'模糊查询的情况下不使用索引 4.     如何设计一张优质的表 5.     如

数据库调优教程(十二) 优化sql语句

五.           优化Sql语句 上一章讲了如何设计一张好的表,一张好的表自然需要好的sql语句去操作它.本章就来聊聊如何优化sql语句. 1.      Sql语句优化原则 优化需要优化的Query 定位优化对象性能瓶颈 从Explain入手 尽可能在索引中完成排序 只取自己需要的Column 尽可能避免复杂的join和子查询 2.     优化limit select * from test1 order by id limit 99999,10 原语句虽然使用了id索引,但是相当于

数据库调优教程(十一) 设计一张漂亮的表

四.           设计一张漂亮的表 上一章讲了如何通过索引来提速我们的查询语句,这一章让我们回到数据库开发的初始阶段,建表.谈谈怎样设计一张漂亮的表. 1.      满足三范式 1NF: 即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只要数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sqlserver),就自动的满足1NF 数据库的分类 关系型数据库:  mysql/oracle/db2/informix/sysbase/sql

数据库调优教程(五) 索引的作用和索引的种类

三.           索引 上一章我们学习了使用explain来生成一个查询执行计划(QEP),从而发现语句存在的问题.在explain返回的结果中,有三个是和索引有关的(possible key.key.extra),可见索引在改善查询效率上的显著地位. 这一章,我们将全方位讲解如何使用索引来优化我们的数据库. 1.      索引的作用 索引的原理是利用特殊的查找算法(如二叉树算法),限制访问的行数,提高访问效率. 另外,索引还可以高效地在表之间建立连接操作,高效的对结果进行排序等等 2

数据库调优教程(二)慢查询数据准备

一.           发现慢查询 上一讲我们谈论了慢查询的定义,这一讲我们来创建一张大表,为慢查询做数据准备. 2.      慢查询数据准备 要想发现慢查询,首先要使慢查询发生.在一张普通数量级的表格中是不能发生慢查询的,除非你对于慢查询的定义时一个毫秒.因此我们必须手动创建一张大数量级的表,这里选择创建一张40万数量级的表(同学们也可以创建百万级的,如果你们的电脑很厉害.但是一般情况下,十万级的数据就可以看出慢查询了). 1)    创建数据库 [plain] view plaincop

数据库调优教程(三)记录慢查询

一.           发现慢查询 上一讲我们为慢查询的发生做了数据准备,这一讲就让我们来发现慢查询,同时把它记录到文件中. 3.      记录慢查询 此时我们已经有让慢查询发生的成本了.执行以下语句,你就知道什么叫慢!查!询! [plain] view plaincopy select empno from emp where ename=''; 一个很明显找不到结果的查询语句居然也执行了近3秒钟. 这时候,作为DBA就应该把这个sql语句记录下来,是记在记事本还是写在笔记本呢?不用想太多

数据库调优教程(九) 添加了索引但不被使用的几种常见可能

三.           索引 6.      添加了索引但不被使用的几种常见可能 上一讲聊了什么时候不要使用索引,但有时候使用了也不见得会被使用. 下面是几种添加了索引但不被使用的情况 1)    多列索引查询条件没有使用最左边的字段 对于创建的多列索引,如果查询条件没有使用最左边的列,索引就不会被使用. 多列索引:一个索引对应多个列 比如 我创建了这么个多列索引 [plain] view plaincopy create index index_deptno_loc on dept (dep