gpt4 book ai didi

sql - 添加基本​​的新 SQL Server 索引会产生更多问题吗?

转载 作者:行者123 更新时间:2023-12-04 13:10:32 25 4
gpt4 key购买 nike

我对索引完全陌生,希望加快我的一些客户系统的速度。我的组织犯了一个错误,将我们的一些客户从 SQL Server 2000 升级到 SQL Server 2008,然后再进行全面的内部测试。结果,(新)服务器的运行速度比以往任何时候都慢。正如您可以想象的那样,这让客户感到困惑。每个客户都有两个 SQL Server 用户数据库,大小都设置为大约 1GB,每个客户大约有 30 个用户。

在我的组织中,目前没有任何资源可以引入开发人员或 DBA 来推荐如何加快新系统到位的操作。

如果我要花四个星期的时间学习 SQL Server 数据库和索引,您认为添加一些索引以查看这是否有什么不同是个好主意吗?我也可以轻松删除索引以使系统恢复原状吗?除了它是一个学习经验?

最佳答案

使用索引通常是一把双刃剑。太多不好,太少也不好。

但是,您可以首先添加对您的查询最有帮助的那些。

运行这个脚本

SELECT
migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) AS improvement_measure,
'CREATE INDEX [missing_index_' + CONVERT (varchar, mig.index_group_handle) + '_' + CONVERT (varchar, mid.index_handle)
+ '_' + LEFT (PARSENAME(mid.statement, 1), 32) + ']'
+ ' ON ' + mid.statement
+ ' (' + ISNULL (mid.equality_columns,'')
+ CASE WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columns IS NOT NULL THEN ',' ELSE '' END
+ ISNULL (mid.inequality_columns, '')
+ ')'
+ ISNULL (' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement,
migs.*, mid.database_id, mid.[object_id]
FROM sys.dm_db_missing_index_groups mig
INNER JOIN sys.dm_db_missing_index_group_stats migs ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details mid ON mig.index_handle = mid.index_handle
WHERE migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) > 10
ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC

(剧本来自伯特邓肯)

然后分析 user_scans、user_seeks、avg_user_impact、last_user_seek、last_user_scan 等列。
查询返回索引创建语句。您可以将索引名称更改为对用户更友好。
我建议谨慎使用它,不要只运行所有索引,而是一项一项,看看情况如何改善。

关于sql - 添加基本​​的新 SQL Server 索引会产生更多问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33904294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com