美文网首页程序员Android开发
索引的基础概念(一)

索引的基础概念(一)

作者: 岛上码农 | 来源:发表于2020-12-12 16:39 被阅读0次

最近面试和不少年轻的后端聊,发现很多人做了2-3年后端,居然没用过索引。因此下载了《High Performance MySQL》(3rd edition,即《高性能MySQL》第三版,国内中文版已出版)。摘取里面的索引一章分开来翻译,希望能够对大家有所帮助。

索引(在MySQL中也称为键)是一种方便存储引擎快速查找行的数据结构。索引是提高性能的关键因素,当数据表很大的时候显得十分重要。通常,小型的数据库即便不使用合适的索引,性能表现得也很不错。但是随着数据量的增加,性能将直线下降。不幸的是,索引经常被忘记或者误解。因此,不重视索引是现实世界中性能问题的罪魁祸首。

索引优化也许是查询性能最有力的手段,常常能够带来数量级的性能提升,而优化后的索引则可能在较好的索引基础上再提升数倍的性能。但是需要注意,真正地使用上优化后的索引通常会需要你重写查询语句。

理解MySQL索引最简单的方式是想象一本书的目录。为了找到书中讲述的一个主题,你会首先从目录找,然后目录会告诉你具体在哪一页。在MySQL中,存储引擎使用索引的方式和书本目录类似。它首先在索引数据结构中找到一个值,一旦找到匹配的索引值就可以找到匹配的数据行。例如下面的语句:

mysql>SELECT first_name FROM salila.actor WHERE actor_id = 5;

actor_id是一个索引列,因此MySQL会通过索引找到actor_id为5的行。换言之,它首先在索引中查找匹配的值,然后再返回包含指定值的数据行。

索引可以包含数据表的一个或多个列。如果索引包含超过一个列,那查询语句中WHERE条件列的顺序很重要。因为MySQL是按照最左匹配原则使用索引(即从最左的WHERE条件开始匹配)。在两个列上创建一个索引和分别在两个列创建各自独立的索引并不相同。

使用ORM是否需要关注索引?
毫无疑问,使用ORM也需要关注索引。ORM会生成逻辑和语法正确的查询语句,但很少会生成索引优化的查询语句(除非是最简单的那种查询方式,例如主键查询)。不管复杂度如何,你都不能将性能寄希望于ORM去解决索引的复杂性和巧妙性。

相关文章

  • 索引的基础概念(一)

    最近面试和不少年轻的后端聊,发现很多人做了2-3年后端,居然没用过索引。因此下载了《High Performanc...

  • Kibana请求Elasticsearch增删改查操作

    1、基础概念 概念说明索引库(indices)indices是index的复数,代表许多的索引,类型(type)类...

  • 《高性能mysql》笔记-索引

    索引基础 索引类型B-Tree索引(默认指明索引)按照顺序存储数据 哈希索引概念:哈希索引基于哈希表实现,只有精确...

  • Elasticsearch 调研

    1. 基础概念 1.1 倒排索引原理 1.2 倒排索引构成 单词词典,使用 BTree 记录所有文档的单词,记录单...

  • ES基本概念及操作

    基础概念 索引(index) /类型(type)相当于关系数据库中的table概念。Elasticsearch5....

  • SQL与索引优化合集

    一、《索引的概念与通用技巧》 内容:聚集索引,非聚集索引,联合索引,索引覆盖的概念以及使用技巧 二、《or、in、...

  • 搜索:搜索引擎索引

    索引基础 单词—文档矩阵单词文档矩阵是表达两者之间包含关系的概念模型;搜索引擎的索引其实就是实现单词-文档矩阵的具...

  • 4.es基本用法

    一.es基础语法 1.索引curl 索引理解:可以理解成mysql的库,但是es中是没有库这个概念的 es是支持r...

  • ElasticSearch CURD(增删改查)操作

    注意:1.基于Version 6.* 基础概念 index 索引,相当于mysql的database(1)代...

  • 数据库索引

    重点: 了解索引的概念,类型 掌握创建索引的方法 掌握如何修改,删除索引 索引 概念:索引是一个单独的,物理的数据...

网友评论

    本文标题:索引的基础概念(一)

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