我需要将字符串的结尾与存储过程中可能结束的列表进行比较.这将被称为很多,并有大约10-15个候选人结局.此时,仅代码解决方案优于创建专用于此的表.有点像:
IF (ENDSWITH(@var, 'foo') OR
ENDSWITH(@var, 'bar') OR
ENDSWITH(@var, 'badger') OR
ENDSWITH(@var, 'snake'))
(
)
Run Code Online (Sandbox Code Playgroud)
我正在寻找速度方面的最佳方式,同时也是可维护性.我知道的候选人是
对,我最喜欢的,但这意味着我必须对字符串长度进行硬编码,因此容易出错.它还意味着多次切割源字符串.
IF ((LEN(@var) >= 3 AND RIGHT(@var, 3) = 'foo')) OR ...
Run Code Online (Sandbox Code Playgroud)喜欢,可能更慢,但有点清洁
IF (@var LIKE '%foo') OR ...
Run Code Online (Sandbox Code Playgroud)CHARINDEX,因为它搜索整个字符串,所以可能更慢
SUBSTRING,很可能等同于RIGHT而且更难看
SQLCLR创建我自己的ENDSWITH,它可以很快
可能有更好的方法我不知道.你怎么看?
下面是一个带有50个并发线程的10K请求的apache bench运行.
我需要帮助理解结果,结果中是否有任何突出的结果可能指向阻塞并限制每秒更多的请求?
我正在查看连接时间部分,并看到"等待"和"处理".它显示等待的平均时间是208,连接的平均时间是0,处理是208 ..总计是208.有人可以向我解释,因为它对我没有多大意义.
apachebench ×1
http ×1
optimization ×1
scalability ×1
server ×1
sql ×1
sql-server ×1
t-sql ×1
tcp ×1