我想檢查我的數據庫表的同義詞表記錄。使用同義詞SQL Server查詢性能問題
下面的語句工作正常,我,但我想擺脫插入和臨時表:
IF OBJECT_ID('tempdb..#tmp_table') IS NOT NULL
DROP TABLE #tmp_table
SELECT
id
INTO
#tmp_table
FROM
synonyms_table WITH (nolock)
WHERE
created_date BETWEEN GETDATE() - 4 AND GETDATE() - 1
SELECT id
FROM #tmp_table tmp
LEFT JOIN main_table main WITH (NOLOCK) ON tmp.id COLLATE SQL_Latin1_General_CP1_CI_AS = main.id
WHERE main.id IS NULL
的問題是,這兩個表是巨大的,如果我要使用左側加入或不存在的,這將是非常緩慢:
SELECT id
FROM synonyms_table sy WITH (NOLOCK)
LEFT JOIN main_table main WITH (NOLOCK) ON sy.id COLLATE SQL_Latin1_General_CP1_CI_AS = main.id
WHERE sy.created_date BETWEEN GETDATE() - 4 AND GETDATE() - 1
AND main.id IS NULL
也許有人知道這裏對我來說是很好的解決方案:)
爲什麼你想擺脫臨時表,如果這工作正常? –
我會停止使用'getdate() - 4'並明確地使用'DateAdd()'來明確並防止以後發生錯誤。爲什麼不直接加入到synonyms義表中? – scsimon