oro*_*aki 23 database database-optimization database-indexes
在各种ORM的文档中,它们总是提供创建索引等的方法.他们总是提到要确保为效率创建适当的索引,就好像这是非手写SQLer的固有知识,需要使用ORM.我对索引(PK之外)的理解基本上是:如果您打算LIKE根据列的内容进行查询(即搜索),则应该为该列使用全文索引.关于指数(主要与效率有关),我还应该知道什么?我觉得我的门口有一个知识世界,但是它下方有一个巨大的折叠式鼠标垫,所以我无法通过(我不知道为什么我觉得我需要这么说,但是谢谢你提供沙发).
And*_*ber 24
想象一个索引非常类似于书后面的索引.这是一本与书内容完全分开的区域,如果你正在寻找一些特定的价值,你可以去索引查找(索引是有序的,所以在那里找东西要比扫描书的每一页都快得多) ).
索引条目有一个页码,因此您可以快速转到寻找主题的页面.数据库索引非常相似; 它是数据库中相关信息的有序列表(索引中包含的字段),以及数据库查找匹配记录的信息.
所以...当你有经常需要搜索的信息时,你会创建一个索引.普通索引不能帮助你进行'部分'搜索,就像LIKE查询一样,但是当你需要得到一组结果,其中字段X具有某些值时,它们会使DBMS无需"扫描"整个表,寻找匹配的价值观.
当您需要对列进行排序时,它们也会有所帮助.
要记住的另一件事是; 如果DBMS允许您创建具有多个字段的单个索引,请务必调查这样做的效果,特定于您的DBMS.如果在查询中使用所有这些字段,则包含多个字段的索引可能只是完全(或根本)有用.相反,对于单个表具有多个索引(每个索引具有一个字段),对于通过多个字段过滤/排序的查询可能没有太多(或任何)帮助.
您提到了全文索引和PK(主键).这些与常规索引不同,但它们通常用于类似目的.
首先,请注意主键通常是一个索引(在MSSQL中,实际上是"聚簇索引"),但具体情况并非如此.例如,MSSQL PK默认为Clustered Index; 聚簇索引的特殊之处在于它们不是存储在别处的单独数据位,而是数据本身按聚类索引顺序排列在表中.这就是为什么流行的PK是一个int值,它是通过顺序递增的值自动生成的.因此,聚集索引特定地按字段的值对表中的数据进行排序.将此与传统字典进行比较; 条目本身由'key'排序,'key'是定义的单词.
但是在MSSQL中(请查看您的DBMS文档以获取您的信息),如果您愿意,可以将聚簇索引更改为其他字段.有时这是在datetime基于字段的地方完成的.
全文索引完全是不同种类的野兽.他们使用了一些相同的原则,但他们所做的与普通索引并不完全相同,我正在描述.另外:在某些DBMS中,LIKE查询不使用全文索引; 特殊查询运算符是必需的.
这些索引是不同的,因为它们的意图不是查找/排序列的整个值(数字,日期,短数据字符数据),而是在文本字段中查找单个单词/短语被索引.
它们还经常能够搜索相似的单词,不同的时态,常见的拼写错误等,并且通常忽略噪声单词.它们工作的不同方式是为什么他们也可能需要不同的操作员来使用它们.(再次,检查您的DBMS的本地文档!)
| 归档时间: |
|
| 查看次数: |
13463 次 |
| 最近记录: |