我被要求根据特定 ID(此处为 406f-871b-a3ee71f7038)获取信息,如下所示:
select * from BIG_Session (nolock)
where SessionSID like '%406f-871b-a3ee71f70386%'
这是低效的吗?等待它完成需要多长时间?我等了 30 秒,觉得太长了,就取消了。
我被要求根据特定 ID(此处为 406f-871b-a3ee71f7038)获取信息,如下所示:
select * from BIG_Session (nolock)
where SessionSID like '%406f-871b-a3ee71f70386%'
这是低效的吗?等待它完成需要多长时间?我等了 30 秒,觉得太长了,就取消了。
您将使用前缀通配符进行扫描%
。如果您知道这406f...
将是字符串的开头,则可以使用可能的查找:
select * from BIG_Session
where SessionSID like '406f-871b-a3ee71f70386%'
请注意,我取出了第一个百分号。
等待它完成需要多长时间?
这取决于您、您的环境、您的用户以及您的业务需求可接受的持续时间。30 秒在某些情况/环境中是可以接受的,但在其他情况下是有害的。
如果您正在搜索特定的 ID,我认为=
会比LIKE
:
select * from BIG_Session (nolock)
where SessionSID = '406f-871b-a3ee71f70386'
至于多长时间,这是主观的,并且在不了解您的环境和期望的更多细节的情况下难以量化。
关于您的使用,也可能值得一读这个 SO 问题NOLOCK
:NOLOCK (Sql Server hint) 是不好的做法吗?