关于数据库性能优化:数据库优化探索-SQL-中的索引
举荐:应用NSDT场景编辑器助你疾速搭建可编辑的3D利用场景在一本书中搜寻特定主题时,咱们将首先拜访索引页面(该页面位于该书的结尾),并找到蕴含咱们感兴趣的主题的页码。当初,设想一下在没有索引页的书中找到特定主题是如许不不便。为此,咱们必须搜寻书中的每一页,这十分耗时且令人丧气。 当 SQL Server 从数据库中检索数据时,它也会呈现相似的问题。为了克服这个问题,SQL Server还应用索引来放慢数据检索过程,在本文中,咱们将介绍该局部。咱们将介绍为什么须要索引以及如何无效地创立和删除索引。本教程的先决条件是 SQL 命令的基本知识。 什么是索引?索引是一个架构对象,它应用指针从行中检索数据,从而缩小查找数据的 I/O(输出/输入)工夫。索引能够利用于咱们要搜寻的一个或多个列。它们将列存储在称为 B 树的独自数据结构中。B-Tree的次要长处之一是它以排序顺序存储数据。 如果您想晓得为什么如果对数据进行排序能够更快地检索数据,那么您必须浏览线性搜寻与二分搜寻。 索引是进步 SQL 查问性能的最驰名的办法之一。它们体积小、速度快,并且针对关系表进行了显著优化。当咱们想要搜寻没有索引的行时,SQL 会线性执行全表扫描。换句话说,SQL必须扫描每一行能力找到匹配条件,这是十分耗时的。另一方面,如上所述,索引使数据放弃排序。 然而咱们也应该小心,索引会创立一个独自的数据结构,这须要额定的空间,当数据库很大时,这可能会成为问题。出于良好做法,索引仅对罕用列无效,能够防止对很少应用的列应用。以下是索引编制可能有用的一些状况: 行数必须为 (>10000)。必须列蕴含大量值。必须的列不得蕴含大量 NULL 值。如果咱们常常依据特定列对数据进行排序或分组,这将很有帮忙。索引疾速检索排序后的数据,而不是执行齐全扫描。在以下状况下能够防止索引 桌子很小。或者当列的值很少应用时。或者当列的值频繁更改时。当优化程序检测到全表扫描破费的工夫少于索引表时,也可能不应用索引,即便它存在也是如此。当表较小或列频繁更新时,可能会产生这种状况。 创立示例数据库在开始之前,您必须在PC上设置MySQL工作台能力轻松遵循本教程。您能够参考此YouTube视频来设置工作台。 设置工作台后,咱们将创立一些随机数据,从中能够执行查问。 创立表: -- Create a table to hold the random dataCREATE TABLE employee_info (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100), age INT, email VARCHAR(100));插入数据: -- Insert random data into the tableINSERT INTO employee_info (name, age, email)SELECT CONCAT('User', LPAD(ROW_NUMBER() OVER (), 5, '0')), FLOOR(RAND() * 50) + 20, CONCAT('user', LPAD(ROW_NUMBER() OVER (), 5, '0'), '@xyz.com')FROM information_schema.tablesLIMIT 100;它将创立一个名为具备名称、年龄和电子邮件等属性的表。employee_info ...