Zaman zaman bazı sorguları çalıştırmam gereken birkaç milyon satır içeren bir tablo var. İlk sorgu genellikle oldukça yavaş olacaktır (yaklaşık 10 saniye) ve sonraki sorgular genellikle çok daha hızlıdır (yaklaşık 1 saniye). Birkaç saat sonra yavaş / sonra hızlı bir döngü tekrar başlar.
İcra planımda tüm gerekli indeksin mevcut ve uygun şekilde kullanıldığını kontrol ettim ve performans farkının, endeksin aslında sonraki sorgular için bellekte olmasından kaynaklandığını varsayıyorum (haklı mıyım, yoksa başka var mı?) olası nedenler?)
Ben de dizinleri kullanarak diğer sorguların bir sürü çalışıyorum, ancak bu sorguları daha az zaman alıcı ve performans daha az kritik, bu yüzden bu dizinler aslında benim kritik dizin bellek önbellek dışına iterek endişe ediyorum.
Açıkça 'daha fazla RAM ekle' düzeltmesinin yanı sıra, dizini belleğe geri zorlamak için her saat çalıştırmak için kukla sorgular oluşturmayı düşünüyorum.
Bunu yapmanın daha zarif bir yolu var mı? SQLServer'ı tek bir dizinin önbelleğe alınmasına yetecek kadar belleğe sahipse, bunun olması gerektiğini ima etmenin bir yolu gibi?
Ben genellikle en iyi şey bu tür şeyler ile ilgili SQLServer berbat değil, ama benim sorgu alışılmadık doğası (çok nadir çalışır, ancak zaman kritik) bana mantıklı (mümkünse) inanıyor yapar biliyorum .
Belirli bir zamanda hangi dizinlerin bellekte önbelleğe alındığını bilmenin bir yolu olup olmadığını da merak ediyorum.