在我的公司中,我们有一个包含各种表的遗留数据库,因此包含许多字段。
许多字段似乎都有NVARCHAR(MAX)
从未达到的大限制(例如:)。
是否将字段的最大宽度设置为最大宽度或比通常输入的字段大2到3倍会对性能产生负面影响?
一个应如何在性能与字段长度之间取得平衡?有平衡吗?
这个问题有两个部分:
在VARCHAR上使用NVARCHAR是否会损害性能?是的,将数据存储在unicode字段中会使存储需求增加一倍。存储在这些字段中的数据大小是所需大小的2倍(直到SQL
Server 2008 R2出现,其中包括unicode压缩。表扫描的时间将是原来的两倍,并且只能将一半的数据存储在缓冲区的内存中缓存。
使用MAX是否会损害性能?不是直接的,但是当您使用VARCHAR(MAX),NVARCHAR(MAX)和这些类型的字段时,并且如果需要对表进行索引,则将无法在SQL
Server 2005/2008 /中在线重建这些索引R2。(Denali对具有MAX字段的表进行了一些改进,因此可以在线重建某些索引。)
问题内容: 当我在MySQL中执行此命令时: 它会影响整个引擎还是仅仅是我当前的交易? 问题答案: 在设置问题方式时,它是基于会话的。 https://dev.mysql.com/doc/refman/5.7/zh-CN/server-system- variables.html 据此,以“两者”为范围。这意味着可以为会话设置它: 或全球:
问题内容: 如果是这样,为什么呢?我的意思是,tinyint的搜索比int更快吗? 如果是这样,那么实际的性能差异是什么? 问题答案: 是的,根据数据类型,确实会有所不同。 vs.不会在速度上产生明显的差异,但是会在数据大小上产生差异。假设是1个字节,而不是4个字节,则每行保存3个字节。一段时间后加起来。 现在,如果它反对,那么将会有些下降,因为整数值之类的排序操作比字符串值要快得多。 如果它是可
问题内容: 例如,我喜欢在Redis中使用冗长的名称。 这样可以吗?还是会影响性能? 问题答案: 您正在谈论使用的密钥并没有那么长。 您提供的示例键用于一个集合,集合查找方法为O(1)。集合(SDIFF,SUNION,SINTER)上更复杂的操作是O(N)。可能的是,与使用较长的键相比,填充是更昂贵的操作。 Redis带有一个称为的基准实用程序,如果您修改src / redis-benchmark
问题内容: 我在表中有两个索引字段- 和(单个索引,不是复合索引)。 的字段值非常有限(假设它仅为0或1),因此50%的表记录具有相同的。另一方面,值来自更大的集合,因此具有相同值的记录量很小。 这些查询中的任何一个都会比另一个查询运行得更快吗? 另外,如果两个字段都没有索引,是否会改变行为? 问题答案: SQL被设计为一种声明性语言,而不是一种过程性语言。因此,查询优化器应该 不会 考虑在决定如
问题内容: 我正在使用MySQL + Hibernate。 MySQL表名长度和列名长度会影响应用程序性能吗? 例如) 哪个更好 ? 问题答案: 不,它不会,在任何程度上都无法衡量。 花更多的精力使您的架构易于理解。从长远(短期)来看,您获得的收益将超过使用较短且难以理解的模式名称所获得的无法衡量的飞秒。
问题内容: 我试图用谷歌搜索,但是没有运气。 我的开关很大,有些情况 显然 比其他情况 更常见 。 因此,我想知道订单是否真正保持原状,并且在“下”之前先测试“上”案例,因此可以更快地进行评估。 我想保留订单,但是如果它影响速度,那么重新排序分支将是一个好主意。 例如: 问题答案: 对switch语句重新排序没有任何效果。 查看Java字节码规范,可以将a编译为a 或一条指令,然后打开a 。A 总