我需要建議如何在查詢大尺寸表時獲得最快的結果。 我正在使用SQL Server 2012,我的條件是這樣的:查詢大尺寸表最快的執行時間
我有5個表包含事務記錄,每個表有35萬條記錄。 所有表格有14列,我需要搜索的列是GroupName,CustomerName和NoRegistration。我有一個包含所有這些表格中的5個的視圖。 GroupName,CustomerName和NoRegistration記錄不是唯一的每個表。
我的應用程序有搜索這些列的功能。 查詢是這樣的:
由組名稱搜索:
SELECT DISTINCT(CustomerName) AS 'CustomerName' FROM TransactionRecords_view WHERE CustomerName LIKE ''[email protected]+'%'
通過NoRegistration搜索:
SELECT DISTINCT(GroupName) FROM TransactionRecords_view WHERE GroupName LIKE ''[email protected]+'%'
按名稱搜索
SELECT DISTINCT(NoRegistration) FROM TransactionRecords_view WHERE LOWER(NoRegistration) LIKE LOWER(@NoRegistration)+'%'
我的問題是如何能我實現搜索最快的執行時間? 現在我的條件,每次搜索,花了3至5分鐘。
我的想法是讓所有5個表中包含不同的GroupName,CustomerName和NoRegistration。
我的想法是讓執行時間更快嗎?或任何其他想法?
謝謝
編輯:
這是視圖查詢 「TransactionRecords_view」
CREATE VIEW TransactionRecords_view
AS
SELECT * FROM TransactionRecords_1507
UNION ALL
SELECT * FROM TransactionRecords_1506
UNION ALL
SELECT * FROM TransactionRecords_1505
UNION ALL
SELECT * FROM TransactionRecords_1504
UNION ALL
SELECT * FROM TransactionRecords_1503
所以列是鍵入字符串?您可以使用GroupName'NewGroup'輸入新的交易,如果您恰好在幾年前使用過一次,那麼新交易恰巧在同一組中?但是,如果有像'NewGrooup'這樣的錯字,那麼巧合的是它自己是一個組?我寧願期望一個GroupName表與交易引用其記錄。 –
'SELECT * ... UNION ALL'?所以你的五張桌子都是平等的結構?那麼爲什麼你有五張桌子,而不是一張?那會好得多嗎? –
@ThorstenKettner因爲它是每個月的交易記錄。我的應用程序中的另一個功能是計算每月,上個月和去年的交易,所以我認爲將它分成每個月會給出更好的性能 – user1008497