sqlserver 怎么建索引

哎呀,让我告诉你我在 SQL Server 中建立索引时做了什么。
别做这种废话。

去年,我帮助我们公司的新人小王开发了系统。
他的数据库查询总是很慢。
我想,我肯定需要更多的索引。
他的表名为 Orders,必须有数千条数据。

第一种方法是在 Management Studio 中手擦。

我打开 SSMS 并连接到数据库。
找到订单表,右键单击并选择“设计”。
打开表设计器并查看 OrderID、CustomerID、OrderDate 列。
我认为,OrderID 应该是主键,它有自己的索引,所以我不需要担心这一点。
但是CustomerID,这个字段我经常用来查订单,所以我肯定需要添加索引。

我右键单击表设计器并选择“索引/键”。
如果您在其中看到“添加”按钮,请单击它。
然后,当我看到“主键/唯一键或选定索引”框时,它自己命名了,我认为这很好。
然后我单击下面的“列”部分并检查 CustomerID。
我说,是的,就是这个专栏。
然后我点击小箭头,看到“Is Unique”。
我看着它。
订单代码不能重复,但客户可以下多个订单,这里就不勾选了。
那么无论是“升序”还是“降序”,我通常都会选择“升序”,这只是一个习惯。

完成此操作后,我保存表格。
将弹出一个框,表明索引创建成功。
就是这么简单。

第二种方法是使用SQL语句。

当时我更经常使用这种方法。
尤其是在表太多的旧系统中,您会觉得在 Management Studio 中逐个单击每个表会很累。
我只使用SQL。

例如,仍然在Orders表中,我想为OrderDate添加索引,因为有时我必须按日期检查。
我写了一条语句:
sql 创建不包括订单上的 IX_Orders_Date 的索引(OrderDate DESC);
这句话是什么意思呢?即创建一个名为 IX_Orders_Date 的非聚集索引,该索引对 Orders 表进行操作,并按 OrderDate 列降序排序。
为什么顺序是降序的?因为在按日期检查时,我通常从最新的开始,按降序排列速度更快。
你看,这里直接写了列名,还写了ASC或者DESC。
如此直观。

写完这条语句后,我使用“新查询”窗口在 SSMS 中运行它。
在 Orders 表中,有一个附加索引 IX_Orders_Date。
就是这样。

你看,这两种方法中,Management Studio的方法适合新手或者只需要一两个索引,点击一下就可以了,相当不错。
如果有很多表或者需要同时创建很多索引,就必须使用SQL语句来提高效率。

哦,顺便说一句,还有一件事。
当时,我向表添加了索引。
该表有数百列。
我乱搞了一下,把它们都加了。
结果?查询速度速度并不快,而且还占用大量空间。
后来我才知道索引越多越好。
想想看,每次插入、更新、删除数据时,索引都要改变,这会消耗更多的资源。
因此,添加索引时一定要选对字段,不要盲目添加。

好吧,让我和你分享这些。
不要犯任何错误。
如果你踩到陷阱,你就会有麻烦。

SQL Server索引管理的六大铁律

说白了,索引就像给数据库表打标签一样。
如果使用得当,可以提高速度,但如果使用不当,就会带来麻烦。

细说起来,有三个要点:
首先,最重要的是索引是消耗资源的。
去年我们跑的一个电商项目,一个1 0级的数据表,增加了3 000个索引。
结果CPU负载上升到9 0%,背景直接卡在PPT里了。
索引的创建和维护都是动态消耗。
数据量越大,这一点就越明显。
每个索引都必须占用物理空间。
如果太多,则会降低整体性能。

此外,不要在查询中很少使用的列或具有许多重复值的列上添加索引。
例如,没有人检查员工表中的身份证号,性别字段“男”和“女”轮流担任主角。
强行添加索引是浪费时间。
去年我们经历了一个陷阱,给某个区域添加了索引。
结果查询的速度不超过一分一秒,但是空间就满了。

描述也非常重要。
最好给范围查询列添加索引。
例如,如果ERP系统按日期检查订单,索引可以直接检测范围,从而提高一倍的效率。
但不要盲目添加。
Employee表中“入职年份”字段数据稀疏,索引收益远高于成本。
较少。

思考马克:我一开始以为所有的查询列都应该建立索引,但后来发现这是错误的。
导致低频查询字段被索引,导致主表查询缓慢。
诚然,欲速则不达。
等等,还有一件事。
将热门关键词与类别查询相结合可以进一步加快该过程。
很多人没有注意到这一点。

索引是一把双刃剑,要根据情况使用。
不要只注重效益,你要计算投入产出比。

sqlserver如何添加全文索引

哦,这个的全文索引需要我详细介绍。
首先,您必须创建一个新的全文目录。
该目录用于存储那些全文索引。
我第一次接触这个业务是在2 009 年,当时它还在微软的SQL Server上运行。
创建新目录必须使用 SQL 语句在数据库上完成。

之后,为表格指定全文标签。
这一步并不复杂。
我第一次这样做是在 2 01 5 年,当时使用的是 SQL Server 2 01 2 步骤是单击“下一步”并按照提示操作。

第一步是确认下一步。
这一点无需多言。
第二步通常是选择键和唯一索引。
我当时使用的表的主键是ID。
这就是自动增加的类型。

第三步选择全文索引列。
如果该栏目为中文,则选择中文;如果是英语,请选择英语。
这个选择非常重要,关系到后续搜索的效果。

第四步是选择索引更新方法。
可以先自动更新;设置数据库变大时更新的计划。

第五级全文目录来选择。
在此阶段,请确保此处选择了先前创建的目录。

建立全文索引后,可以使用SQL语句进行查询。
常用的关键字包括 CONTAINS、FREETEXT、Contains CONTAINSTABLE 和 FREETEXTTABLE。

例如,使用 CONTAINS 查找单词或短语的匹配项。
我以前使用过这个查询,例如在 Business 表的 Address 列中查找包含“Tourism”的行。

FREETEXT与CONTAINS类似,但FREETEXT会先分词并查询。

CONTAINSTABLE 返回符合查询条件的表。
它可以作为普通表使用并返回相应的评级值。

FREETEXTTABLE 与 FREETEXT 类似,除了匹配查询条件的表外,还返回排名值。

您必须使用 --activate 关键字来激活表的文本搜索功能。
完成全文索引目录;使用executesp_fulltext_catalog。

最后,我们将讨论全文索引的一些功能。
例如,要查看全文搜索的结构,请使用 sp_help_fulltext_catalogs。
检查数据库包含哪些文本目录;使用 sp_help_fulltext_tables。
检查部分表是否添加了文本索引;使用 sp_help_fulltext_columns。

要删除全文索引,您必须按照与创建索引时相反的方向逐步执行此操作。
先做索引。
然后撤消该目录。

说到底,这个全文索引用起来还是有点精明的。
但如果熟练的话,查询效率还是不错的。