2015-12-17 126 views
0

我在下面有一個基本的查詢。SQL查詢每天開始緩慢

Select [ID] 
FROM MyTable 
Where [TextBlobField] like '%test%' 

當我每天第一次運行它時,此查詢需要很長時間。之後它只需要約5秒。第二天早上返回查詢時間很長。這是因爲SQL緩存臨時索引?

我該如何讓這個速度一直持續下去?注意:我沒有權限在桌面上創建自己的索引。我可以創建一個存儲過程,但不知道是否有幫助?我應該創建一個視圖嗎?

+1

您正在使用哪些DBMS? –

+0

查詢來自C#應用程序。 – user1887198

+0

它在SQL 2005中運行。 – user1887198

回答

3

原因很可能是索引緩存。原因:您的查詢無法使用where子句的索引。儘管like可以使用索引,但模式以通配符開頭時不能使用索引。

但是,您正處在正確的軌道上。原因可能是因爲表本身需要在內存中讀取和緩存。

雖然like不使用索引,但您可能可以修改查詢以使用contains,利用全文索引。您可以詳細瞭解here

+0

我發現了表上的一些現有的意見?這會提高性能還是會在視圖上的第一個查詢需要很長時間的情況下保持不變? – user1887198

+0

@ user1887198。 。 。有些東西似乎在晚上發生,導致冷藏緩存(至少就此表而言)。您可以使用SQL Server代理安排一項工作,以便在其他任何人之前在該表上運行查詢。 –

2

這通常是因爲緩存。

一個解決方案是在系統被最終用戶使用之前,每天早上自動調用該查詢 - 這會觸發緩存。