能使用常规索引的情况,应避免使用全文索引(Full Text search),因为全文索引不会自动更新索引字段,后期维护成本高,并且占用磁盘空间大
参考链接: How can I create index on nvarchar(max) datatype in sql
1、创建全文 索引目录(Create full text catalogue)
2、创建全文索引字段
大部分开发会了解这样的《开发规范》:创建索引要选择区分度高的字段。他们会认为区分度低的字段不适合创建索引或者不适合添加到组合索引里面。但是这样的 *** 作会导致很多慢查。举例来说:
select from tab where a=1 and b=2;
场景 1
符合 a=1的记录数有 10w 条记录 ,b=2 有 1000 条记录。如果只是创建idx_a(a),sql 请求通过索引idx_a访问 10w 条件记录,然后还要逐一匹配 10w 条记录中的 status,找到符合 b=2的记录。这个动作会导致慢查。如果创建组合索引idx_ab(a,b),sql 请求通过索引idx_ab可以直接定位到 1000 条记录,无需额外的过滤。这样减少访问 9900 条记录的时间,提升查询速度。
场景 2
符合 a=1的有 100 条记录,status=2 有 10 条记录。其实场景 2 因为数据量比较少,直接访问 100 条记录和定位到 10 条记录的时间消耗相差不大,量变不足以引发质变,可以忽略了。
Tips:
创建索引的目的是通过索引尽可能找到匹配 where 条件的行,减少不必要的回表,提高查询效率;
需要辩证地看待区分度比较低的字段在组合索引中的作用。在组合索引的情况下,我们不能只是单纯地看字段的区分度,而是要看符合条件的记录数是多少。符合条件的记录越少,性能越好。
以上就是关于在SQL server中创建索引&全文索引(Full Text search)全部的内容,包括:在SQL server中创建索引&全文索引(Full Text search)、在数据库中,建立索引的主要作用是、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)