我在sql server中有一个查询,其中包含一个永远存在的连接。我希望有人可能有提示加快速度。
我认为问题是我加入了一个名为Reseller_CSN的字段,该字段的值为' _0070000050'
我已尝试在联接中使用子字符串函数返回除下划线之外的所有内容,例如' 00000050'但是当我尝试将结果转换为int或bigint时,我一直收到错误。
任何提示都将不胜感激,查询如下:
SELECT
t1.RESELLER_CSN
,t1.FIRST_YEAR_RENEWAL
,t1.SEAT_SEGMENT
,t2.Target_End_Date_CY
,t2.Target_End_Date_PQ
,t2.Target_End_Date_CY_1
,t2.Target_End_Date_CY_2
,t1.ASSET_SUB_END_DATE
FROM dbo.new_all_renewals t1
LEFT JOIN dbo.new_all_renewals_vwTable t2
ON SUBSTRING(t1.RESELLER_CSN,2,11) = SUBSTRING(t2.RESELLER_CSN,2,11)
答案 0 :(得分:2)
对已处理列的连接总是比原始列上的连接花费更多精力。在这种情况下,您可以使用计算列来提高性能。例如,在第一个表格中,您可以执行以下操作:
alter table new_all_renewals add CSN_num as SUBSTRING(t1.RESELLER_CSN,2,11);
create index on new_all_renewals(CSN_num);
这将在列上生成一个索引,这应该加快查询速度。 (注意:您需要引用计算列而不是实际使用该函数。)