Joh*_*ing 1 sql t-sql sql-server performance
我有一个非常高流量的表,char(50)其中包含一个参与多个索引的字段.该char(50)字段允许NULLS,在这种情况下,NULL值被认为与我的目的非NULL,零长度字符串相同.
我也忽略了前导和尾随空格,虽然我在插入数据之前擦除了数据,但它也可以通过我无法控制的方式插入.
我有一个用于将数据从一个表复制到主表的sproc,它需要是高性能的.我需要在插入新数据之前删除重复记录,并且我使用此线程中讨论的方法来执行删除操作.
我的删除语句看起来像这样(简化):
delete masterTable
from masterTable t
join incomingDataTable inc on
(
LTRIM(RTRIM(COALESCE(inc.TextField,''))) =
LTRIM(RTRIM(COALESCE(t.TextField,'')))
)
where LTRIM(RTRIM(COALESCE(t.TextField,''))) <> ''
Run Code Online (Sandbox Code Playgroud)
我已经读过像LTRIM(RTRIM(...))这样的结构很糟糕.我的删除声明可以改进,如果是,如何改进?
编辑: 只是为了澄清,TextField确实参与了两个表的索引.
EDIT2: 在两个表中TextField定义char(50).它不是类型TEXT.