sql-server – Substring与右左组合的SQLServer中的相对性能
这是一个基于性能的问题,而不是“
I don’t understand”或“
best practice”问题.
我在SQLServer数据库中有一个varchar字段,该字段保证长于7个字符. 例如,如果varchar的值为1234567890,我将寻找2345部分. 在右上角的组合中使用子字符串有性能优势吗? SELECT SUBSTRING(account,2,4) FROM payment 要么 SELECT RIGHT(LEFT(account,5),4) FROM payment 我已经注意到使用右边的左边有一个1,760,335条记录,但我不知道这是否是由于缓存查询等原因. UPDATE 解决方法1为一个有趣的问题.您评估SQL Server可能通过优化显着地更改每个语句可能是准确的;与您的评估相同,在这样大的集合中,SQL Server可能能够比一个查询更好地缓存一个查询.另外还有两件事情可能是(模糊的)相关的: >内存消耗;如果LEFT / RIGHT组合消耗更多的内存,我会很好奇.在理论上,第一个函数的返回值将需要被存储,以便它可以被传递到第二个函数中,尽管同一个寄存器可能被反复使用. 在使用char和varchars的字符串限制之外,SQL Server也非常宽恕.以下代码将运行没有任何错误. DECLARE @Test varchar(50); SET @Test = 'Hello World'; SELECT substring(@Test,4); SELECT substring(@Test,2000,5000); 所以将: SELECT right(left(@test,500),400); 我的猜测是,对你的问题的答案的解释在于有关的东西;不幸的是,我不知道你的问题的答案. 如果您使用较长的字符串或char与varchar得到相同的性能结果,我会很好奇.这些测试可以为SQL Server的内部结构提供更多的见解. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |