如何从 nvarchar SQL Server 2008 检查 nvarchar 值
这是我的临时表:
CREATE TABLE #tmpRecentTxns(SerialID nvarchar(50) null,TranDate datetime2 null)
select *
from #tmpRecentTxns
where #tmpRecentTxns.SerialID NOT IN
(SELECT distinct Phone
FROM ApplicationVariables
WHERE datediff(n, vardatetime, getdate()) <= 300)
数据库中的Phone
数据类型为nvarchar(10)
。
问题:当我要选择值时,它花费了太多时间。
请帮我看看如何消除这个问题。
提前致谢。
This is my temporary table :
CREATE TABLE #tmpRecentTxns(SerialID nvarchar(50) null,TranDate datetime2 null)
select *
from #tmpRecentTxns
where #tmpRecentTxns.SerialID NOT IN
(SELECT distinct Phone
FROM ApplicationVariables
WHERE datediff(n, vardatetime, getdate()) <= 300)
Here Phone
datatype is nvarchar(10)
in database.
Problem : when I am going to select value it is taking too much time.
Please help me out how to remove this problem.
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为这会产生与您相同的输出。
它将允许您使用
vardatetime
上的索引。I think this will give the same output as you have.
It will allow you to use an index on
vardatetime
.我不认为您的
Phone
类型为NVARCHAR(10)
是性能不佳的原因。首先,您应该确保您的
ApplicationVariables
表(包括Phone
列)中的vardatetime
列有索引。其次,您应该更改查询以便可以使用该索引:
另外:我建议对
DATEDADD
或DATEDIFF
使用MINUTE
说明符- 更清楚你想要做什么。I don't think the fact your
Phone
is of typeNVARCHAR(10)
is the reason for poor performance.First of all, you should make sure you have an index on the
vardatetime
column in yourApplicationVariables
table (including thePhone
column).Second, you should change the query so that this index can be used:
Also: I would recommend to use the
MINUTE
specifier forDATEDADD
orDATEDIFF
- much clearer what you're trying to do.