美文网首页
数据库优化学习笔记(四)

数据库优化学习笔记(四)

作者: 欧阳的博客 | 来源:发表于2018-03-27 22:07 被阅读0次

索引基本介绍

没有索引的情况下,查找数据是遍历表所有数据,因为实际的查询的某个值记录不止一条,得查找到最后一条才能确定唯一。

对要查找的条件列建立索引,会在数据库中存放一个索引文件,存储结构为B树。

B树索引检索过程

上图建立了Iname_pinyin字段的索引,查找数据时从根节点开始一直查找到叶节点,直到查找到对应值的主键地址,再在原表中查找记录。

主键建立的索引叫 丛生索引,该索引在叶子节点存储的是实际的数据,不是地址。

这里知道了索引大概的原理,但实际索引存储的数据结构有很多种,这里不深入研究了。

索引实效的场合总结

这个比较重要,这里介绍四点可能会导致索引失效的情况:

1、进行后方一致/部分一致检索的场合。

例:select * from employee where column_name like '%w%';

select * from employee where column_name like '%w';

2.使用了is not null、!=、<>比较运算的场合

在数据库优化学习笔记(一)中说过,不要使用不等号,要一一列举出来。

3、对列使用了运算/函数的场合

例:select * from table_name where YEAR(birth) = '1980';

4、复合索引的第一列没有包含在where条件语句中的场合

例如创建了这个索引:create index idx_pinyin on employee(lname_pinyin,fname_pinyin);针对上面这个索引,下面两种情况索引是有效的:

√select * from employee where lname_pinyin = 'wang';

√select * from employee where lname_pinyin = 'wang' and fname_pinyin ='xiao';

以下两种情况是会失效的:

×select * from employee where fname_pinyin ='xiao';

×select * from employee where lname_pinyin = 'wang' or fname_pinyin ='xiao';

第二条用了or关键字,所以还要单独对fname_pinyin列进行检索,因此也会失效。

相关文章

  • 数据库索引学习笔记

    数据库索引学习笔记 数据库索引优化是后台开发必备的技能,本文记录下学习数据库索引的一些心得。 MyISAM和Inn...

  • 数据库优化学习笔记(四)

    索引基本介绍 没有索引的情况下,查找数据是遍历表所有数据,因为实际的查询的某个值记录不止一条,得查找到最后一条才能...

  • 无标题文章

    目录 笔记大型项目优化概述大型项目优化的方向代码优化数据库优化缓存优化架构优化Memcache与MySQL比较语法...

  • 数据库优化学习笔记(三)

    数据库优化学习笔记(二)学习下mysql的基本语句,常用结构,接下来涉及到mysql的事物管理,索引、存储过程、使...

  • Web性能优化常见技巧

    阶段一:访问网页地址 阶段二:发出请求:http请求优化 阶段三:访问数据库 (SQL数据库优化)后端优化 阶段四...

  • 学习笔记-数据库优化

    腾讯课堂,燕十八Mysql高性能优化https://ke.qq.com/course/171224 建表原则 变长...

  • 数据库设计三范式与反范式

    MySql设计与优化系列笔记:一、数据库设计三范式与反范式二、MySql表设计与优化 第一范式: 1、数据库的所有...

  • project 5 movies question

    1.数据的下载 教程:Biopython学习笔记(四)访问NCBI Entrez数据库 - 简书 (jianshu...

  • zabbix优化之进阶版

    官网调优 1. 数据库优化 1.设置数据库分区优化,buffer优化,hash优化, 说明:数据库分区优化的优点:...

  • GEO数据库视频学习笔记(差异分析、可视化、GSEA)

    笔记回顾:1.GEO数据库视频学习笔记(芯片数据下载和数据读取)2.GEO数据库视频学习笔记(ID转换)3.GEO...

网友评论

      本文标题:数据库优化学习笔记(四)

      本文链接:https://www.haomeiwen.com/subject/gbpscftx.html