sqlserver 怎么建索引

严格来说,在SQL Server中创建索引有两种方法;一种是在图形界面上进行拖拽操作,另一种是编写SQL语句直接执行。
两种方法各有优缺点;最重要的是,这取决于您的使用条件和专业知识。

我们先来说说最重要的适合新手或者临时索引的图形界面功能。
在我们去年参与的一个项目中,一名实习生在使用这种方法时感到困惑,因为表设计者必须一次选择三列来创建索引。
结果,查询速度慢了 3 0%。
用行话来说,这称为雪崩效应。
事实上,前面的一个小延迟会影响后面的一切。
另一件需要注意的事情是,默认情况下系统生成的索引名称是令人困惑的字符串,例如“PK_dbo_Employees”,这些字符串没有太大效果,但看起来很烦人。
还有一个更重要的细节。
例如,如果您将其设置为唯一索引,但数据有重复值。
系统会报错。
很多人并不关心这个。

SQL语句和一开始我以为创建标签会更灵活,但后来发现这是错误的。
当您看到表中有数百列时;使用图形界面点击实际上更快。
但使用 SQL 来创建它有一个优点。
这可以直接在脚本中批量完成。
比如,我上次给HR系统的所有表添加非聚集索引,数据量大概有3 000级左右,前几天运行SQL语句只用了五分钟。

等等,还有一件事,在创建索引时不要忘记考虑填充因子。
虽然默认设置是1 00%,但是如果你的数据量特别大;我们去年测试了2 00万条记录,保留8 0%的像表可以节省大量空间。
说实话,这很复杂。
许多人在创建此参数后忘记更改它。

我认为使用SQL语句创建索引是值得尝试的;但是,最好先花时间在测试环境中。
不要最后一次在半夜重建索引。

sqlserver写入表数据提示索引超出数组界限

上周,有客户问我,为什么在SQL Server中写入数据时总是出现“索引超出数组限制”的错误。
这个问题其实很常见,下面我给大家详细解释一下。

首先,这个错误通常是由于在处理数据时意外访问了不存在的索引而导致的。
就像你在错误的地方寻找某样东西,却发现它不在那里。

第一种情况是查询结果集为空。
例如,你写了一个查询,原本想从数据库中查找一些数据,却发现根本没有数据。
然后你继续使用这个空的结果集来执行操作,比如获取特定索引的值,就会出现错误。
解决方案非常简单。
您可以在操作前检查结果集是否为空,例如使用 IF @@ROWCOUNT > 0 等语句。
​​
第二种情况是访问无效的数组索引。
这就像您要查找数组中的第 1 00 个元素,但该数组只有 9 9 个元素。
为了避免这种情况,您需要确保索引值不超过数组的最大长度。

第三种是数据类型转换错误。
例如,如果强制将数字转换为字符串,结果发现数字太大,转换后的字符串长度超出了数据库字段限制。
目前,您可以使用 TRY_CAST 或 TRY_CONVERT 等函数来尝试转换。
如果转换失败,它们将返回 NULL 而不是抛出错误。

最后,可能存在版本不兼容的问题。
如果 SQL Server Management Studio (SSMS) 的版本与数据库的版本不匹配,也可能会出现此错误。
这时,您可以尝试将您的SSMS升级到与数据库相同或更高的版本。

综上所述,解决该错误需要从多个角度考虑,包括检查查询结果、确保索引有效、避免数据类型转换错误、确保软件版本兼容等。
如果你还是搞不明白,你可能需要找专业的数据库管理员寻求帮助。
无论如何,这取决于你。
我还在想这个问题,也许还有其他细节需要注意。