数据库优化探索SQL中的索引

北京中科白癜风医院郑华国 https://wapjbk.39.net/yiyuanfengcai/ys_bjzkbdfyy/791/
推荐:使用NSDT场景编辑器助你快速搭建可编辑的D应用场景

在一本书中搜索特定主题时,我们将首先访问索引页面(该页面位于该书的开头),并找到包含我们感兴趣的主题的页码。现在,想象一下在没有索引页的书中找到特定主题是多么不方便。为此,我们必须搜索书中的每一页,这非常耗时且令人沮丧。

当SQLSrvr从数据库中检索数据时,它也会出现类似的问题。为了克服这个问题,SQLSrvr还使用索引来加快数据检索过程,在本文中,我们将介绍该部分。我们将介绍为什么需要索引以及如何有效地创建和删除索引。本教程的先决条件是SQL命令的基本知识。

什么是索引?

索引是一个架构对象,它使用指针从行中检索数据,从而减少查找数据的I/O(输入/输出)时间。索引可以应用于我们要搜索的一个或多个列。它们将列存储在称为B树的单独数据结构中。B-Tr的主要优点之一是它以排序顺序存储数据。

如果您想知道为什么如果对数据进行排序可以更快地检索数据,那么您必须阅读线性搜索与二分搜索。

索引是提高SQL查询性能的最著名的方法之一。它们体积小、速度快,并且针对关系表进行了显著优化。当我们想要搜索没有索引的行时,SQL会线性执行全表扫描。换句话说,SQL必须扫描每一行才能找到匹配条件,这是非常耗时的。另一方面,如上所述,索引使数据保持排序。

但是我们也应该小心,索引会创建一个单独的数据结构,这需要额外的空间,当数据库很大时,这可能会成为问题。出于良好做法,索引仅对常用列有效,可以避免对很少使用的列使用。以下是索引编制可能有用的一些情况,

行数必须为()。

必需列包含大量值。

必需的列不得包含大量NULL值。

如果我们经常根据特定列对数据进行排序或分组,这将很有帮助。索引快速检索排序后的数据,而不是执行完全扫描。

在以下情况下可以避免索引,

桌子很小。

或者当列的值很少使用时。

或者当列的值频繁更改时。

当优化程序检测到全表扫描花费的时间少于索引表时,也可能不使用索引,即使它存在也是如此。当表较小或列频繁更新时,可能会发生这种情况。

创建示例数据库

在开始之前,您必须在PC上设置MySQL工作台才能轻松遵循本教程。您可以参考此YouTub视频来设置工作台。

设置工作台后,我们将创建一些随机数据,从中可以执行查询。

创建表:

--CratatabltoholdthrandomdataCREATETABLEmploy_info(idINTPRIMARYKEYAUTO_INCREMENT,namVARCHAR(),agINT,mailVARCHAR());

插入数据:

--InsrtrandomdataintothtablINSERTINTOmploy_info(nam,ag,mail)SELECTCONCAT(Usr,LPAD(ROW_NUMBER()OVER(),5,0)),FLOOR(RAND()*50)+20,CONCAT(usr,LPAD(ROW_NUMBER()OVER(),5,0),

xyz.


转载请注明:http://www.xcqg58.com/pxxx/pxxx/26847918.html

  • 上一篇文章:
  •   
  • 下一篇文章: