数据库 – 我如何知道什么时候索引列,以及什么?

前端之家收集整理的这篇文章主要介绍了数据库 – 我如何知道什么时候索引列,以及什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在各种ORM的文档中,它们总是提供一种创建索引等的方式.他们总是提到要确保为效率创建适当的索引,就像这是一个非手写的sqler的内在知识,需要使用ORM.我对索引(PK之外)的理解基本上是:如果您打算根据列的内容进行LIKE查询(即搜索),则应该为该列使用全文索引.我还应该了解哪些指标(主要涉及效率)?我觉得在我的门口有一个知识世界,但是有一个巨大的折叠鼠标垫堵塞在它下面,所以我不能通过(我不知道为什么我觉得我需要说,但是感谢提供沙发).

解决方法

想象一个索引,就像一本书背面的索引一样.这是与书内容完全不同的区域,如果你正在寻找一些具体的价值,你可以去索引并查找(索引是有序的,所以找到的东西比扫描每一页书快得多).

索引条目有一个页码,所以你可以快速去寻找你的主题页面.数据库索引非常相似;它是数据库中相关信息的有序列表(索引中包含的字段),其中包含数据库的信息,以查找匹配的记录.

所以…当您有需要频繁搜索的信息时,您将创建一个索引.正常的索引不能帮助您“像”LIKE查询的“部分”查询,但是无论何时需要获取一组结果,其中字段X具有一定的值,它们会使DBMS无需“扫描”整个表,寻找匹配的值.

当您需要对列进行排序时,它们也会有所帮助.

要记住的另一件事如果DBMS允许您创建具有多个字段的单个索引,请确保调查这样做的影响,特定于您的DBMS.如果所有这些字段都在查询中使用,那么包含多个字段的索引可能只有完全(或全部)有用.相反,对于单个表的多个索引,每个索引具有一个字段可能对于由多个字段进行过滤/排序的查询可能没有太多(或任何)帮助.

您提到全文索引和PK(主键).这些不同于常规索引,尽管它们通常用于类似的目的.

首先,请注意,主键通常是一个索引(在MSsql中,实际上是一个“集群索引”),但这并不是特别的.作为一个例子,默认情况下,MSsql PK是一个聚簇索引;聚簇索引是特殊的,因为它们不是存储在其他地方的数据的单独位,而是数据本身按照聚簇索引按顺序排列在表中.这就是为什么一个流行的PK是一个int值,它是通过顺序增加自动生成的.因此,集群索引会按照字段的值对数据进行排序.与传统词典进行比较条目本身由’key’排序,这是被定义的单词.

但是在MSsql中(检查您的DBMS文档以获取信息),您可以将Clustered Index更改为不同的字段.有时这是在基于datetime的字段上完成的.

全文索引完全是不同种类的野兽.他们使用一些相同的原则,但是他们正在做的与我正在描述的正常索引不完全相同.另外:在一些DBMS中,LIKE查询不使用全文索引;需要特殊查询运算符.

这些索引是不同的,因为它们的意图不是在列的整个值(数字,日期,一小段char数据)上查找/排序,而是在文本字段中查找单个单词/短语,被索引.

它们还可以经常地使搜索类似的词,不同的时态,常见的拼写错误等,并且通常忽略噪声词.他们工作的不同方式是为什么他们也可能需要不同的操作符来使用它们. (再次检查您的DBMS的本地文档!)

原文链接:https://www.f2er.com/mssql/82542.html

猜你在找的MsSQL相关文章