【发布时间】:2017-03-24 06:55:39
【问题描述】:
在表达式中进行类型转换.....可能会影响查询泛选择中的“CardinalityEstimate”。 表 T1 和 T2 都有聚集索引。
如何克服警告?
CREATE TABLE T1
(
KEY INT IDENTITY(1,1) NOT NULL,
CODE VARCHAR(50),
DESCRIPTION VARCHAR(100),
EXTERNAL_KEY VARCHAR(15),
FLAG BIT
)
INSERT INTO T1 VALUES(1,'ASS','DESC','NULL',0)
INSERT INTO T1 VALUES(1,'ASS1','DESC','45213',1)
INSERT INTO T1 VALUES(1,'ASS2','DESC','NULL',1)
INSERT INTO T1 VALUES(1,'ASS3','DESC','NULL',0)
INSERT INTO T1 VALUES(1,'ASS4','DESC','56321',1)
CREATE TABLE T2
(
KEY INT IDENTITY(1,1) NOT NULL,
CODE VARCHAR(50),
DESCRIPTION VARCHAR(100),
EXTERNAL_KEY NUMERIC(14,0)
)
INSERT INTO T2 VALUES(1,'DSA','DESC',51256)
INSERT INTO T2 VALUES(1,'DSA1','DESC',45213)
INSERT INTO T2 VALUES(1,'DSA2','DESC',51256)
INSERT INTO T2 VALUES(1,'DSA3','DESC',56321)
实际查询:
SELECT T1.KEY,T1.FLAG,T2.KEY, FROM T2 INNER JOIN T1 ON
CAST(NULLIF(RTRIM(T1.EXTERNAL_KEY),'') AS NUMERIC(14,0)) = T2.EXTERNAL_KEY
WHERE T1.EXTERNAL_KEY IS NOT NULL
【问题讨论】:
标签: sql-server