gpt4 book ai didi

sql-server - 什么时候可以将 varchar 加入 nvarchar

转载 作者:行者123 更新时间:2023-12-01 09:23:47 24 4
gpt4 key购买 nike

我需要了解 varchar 和 nvarchar 之间的连接何时有效,何时无效。

背景简介:我们会将许多 varchar 列更改为 nvarchar 列。我们还有几十个 SSRS 报告,总共有 100 个左右的查询。我需要评估更改的风险 - 希望避免过度测试。

(我确实认识到不应该首先在 varchar 列上进行连接,但对于不同的日子来说,这是一个不同的问题......)

过去我曾注意到 varchar 到 nvarcher 连接的问题,使用 COLLATE DATABASE_DEFAULT 来解决该问题,但我似乎无法仅通过两种数据类型之间的简单连接来重现此类问题。

这种不匹配何时会导致问题?

最佳答案

一般来说,加入 varchar 和 nvarchar 列“有效”,以下重要注意事项通常归结为“......但如果可以避免,则不应该这样做”:

1) 查询和连接中不匹配的 varchar/nvarchar 可能会导致巨大的性能问题。因为数据库基本上必须在 JOIN 或 WHERE 子句比较的一侧执行一个功能,以便从一种类型转换为另一种类型,以便比较或匹配它们,所以即使有明显合适的索引可用,它也可能导致表扫描。绝对建议在 WHERE 子句中比较或在 JOIN 子句中连接的任何列都是相同的基本类型。

2)您提到的类型不匹配错误通常发生在引用临时表时,当数据库中列的排序规则与安装 SQL Server 时选择的排序规则不同时。这是因为临时表是在“tempdb”中创建的,它具有服务器本身使用的默认排序规则。我采用了一项策略,即任何时候使用临时表时,都应使用 COLLATE DATABASE_DEFAULT 声明每个 varchar/nvarcher 列,以便创建它的排序规则与数据库的默认排序规则匹配,而不是 tempdb 的默认排序规则.如果您在临时表上放置索引并使用 WHERE 或 JOIN 中的列(见上文),这可以消除错误,并确保正确选择索引。

关于sql-server - 什么时候可以将 varchar 加入 nvarchar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28934128/

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