2016-04-18 19 views
0

我需要建議如何在查詢大尺寸表時獲得最快的結果。 我正在使用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 
+0

所以列是鍵入字符串?您可以使用GroupName'NewGroup'輸入新的交易,如果您恰好在幾年前使用過一次,那麼新交易恰巧在同一組中?但是,如果有像'NewGrooup'這樣的錯字,那麼巧合的是它自己是一個組?我寧願期望一個GroupName表與交易引用其記錄。 –

+0

'SELECT * ... UNION ALL'?所以你的五張桌子都是平等的結構?那麼爲什麼你有五張桌子,而不是一張?那會好得多嗎? –

+0

@ThorstenKettner因爲它是每個月的交易記錄。我的應用程序中的另一個功能是計算每月,上個月和去年的交易,所以我認爲將它分成每個月會給出更好的性能 – user1008497

回答

1

好的,所以你不需要製作這些新表格。如果您基於這些字段創建非聚集索引,它將(實際上)執行您的操作。索引只會將數據存儲在您指示的列上,而不是整個表格中。但請注意,索引對於SELECT語句非常有用,但會對任何寫入語句(INSERT,UPDATE等)產生負面影響。

接下來,您想要在啓動實際執行計劃的情況下運行查詢。這將向您展示優化器如何決定運行每個查詢(在後端)。這裏有沒有什麼特別的問題,是否有任何步驟佔用了整個運營商的成本?關於YouTube上的執行計劃有很多很棒的教學視頻,如果你之前沒有看過exe計劃,請檢查一下。

+1

感謝您的意見。我使用Actual Execution Time運行查詢,並且缺少2個索引。 – user1008497

3

,您必須出示TransactionRecords_view的SQL。你有索引嗎? NoRegistration專欄的排序規則是什麼?粘貼每個查詢的實際執行計劃。

+1

是一個答案**或**評論**。 –

+0

我已經爲每個表編制了索引,但它僅適用於我的應用中另一個更重要的功能。忘記索引這個功能。使用實際執行計劃並缺少2個索引。謝謝 – user1008497

+0

@NeerajPrasadSharma這是一個評論與答案自我考慮:) –

0

您是否嘗試過檢查實際執行計劃是否缺少索引?

此外,當你在varchar上使用子句時,我聽說過關於全文搜索..也許它可以幫你:

https://msdn.microsoft.com/en-us/library/ms142571(v=sql.120).aspx

+0

全文搜索看起來不錯,但要使用我需要創建全文索引和全文索引需要主唯一鍵,並且表沒有唯一鍵。謝謝 – user1008497