ANALYZE deyimi düzenli aralıklarla ya da bir tablonun içeriğinde büyükçe bir değişiklik yaptıktan hemen sonra çalıştırılırsa iyi olur. Toplanan istatistikler planlamacıya en uygun sorgu planını seçmekte yardımcı olarak, sorgu işleminin hızını arttırmasını sağlayacaktır. Genel bir strateji, işlemler bakımından günün en sakin zamanında VACUUM[vacuum(7)] ve ANALYZE çalıştırmaktır.
VACUUM FULL deyiminin aksine, ANALYZE hedef tabloda sadece bir okuma kilidi gerektirir, böylece tablo üzerinde aynı anda başka etkinlikler de yapabilir.
ANALYZE tarafından toplanan istatistikler genellikle, her sütundaki en ortak değerler ile her sütundaki yaklaşık veri dağılımını gösteren bir çan çizgesi içerir. Bunlardan biri ya da her ikisi de,
ANALYZE bunları ilginç bulmazsa (örneğin, bir sütundaki değerlerin eşsiz olması istenmişse, burada ortak bir değer olmayacaktır) ya da sütun veri türü ilgili işleçleri desteklemiyorsa atlanabilir. İstatistikler ile ilgili daha ayrıntılı bilgiyi
http://www.postgresql.org/docs/8.0/static/maintenance.html adresinde bulabilirsiniz.
Çok büyük tablolarda, ANALYZE her satırı tek tek incelemek yerine tablo içeriğinden rasgele örnekler alır. Bu, çok büyük tabloların analizinin çok kısa bir sürede gerçekleştirilmesini mümkün kılar. Ancak bu istatistikler yaklaşıktır ve ANALYZE'ın her çalıştırılışında, tablo içeriği çok fazla değişmemiş olsa bile, çok değişik sonuçlar elde edilebilir. Bu, EXPLAIN tarafından gösterilen planlamacının tahmini maliyetlerinde küçük değişiklikler şeklinde sonuçlanabilir. Yaygın olarak, bu belirlenimci olmayan yaklaşım, ANALYZE'ın her çalıştırılışında sorgu eniyilecinin farklı sorgu planları seçmesine sebep olur. Bundan kaçınmak için, ANALYZE tarafından toplanan istatistik miktarını aşağıda açıklandığı gibi arttırmalısınız.
Analizin genişletilmesi, her sütun için istatistik hedefi
ALTER TABLE ... ALTER COLUMN ... SET STATISTICS ile belirtilerek sütun sütun ya da
default_statistics_target yapılandırma değişkeninin değeriyle denetlenebilir (
ALTER TABLE[alter_table(7)] kılavuz sayfasına bakınız). Hedef değer, en ortak değer listesindeki girdilerin azami sayısı ve çan çizgesindeki azami çubuk sayısı olarak belirtilir. Ön tanımlı hedef değeri 10'dur. Bu değer,
ANALYZE işleminin aldığı zaman ve
pg_statistic tablosunun kapladığı alan ile planlamacının tahminlerindeki doğruluk arasındaki dengeyi sağlayacak bir değere ayarlanabilir. Ayrıca, istatistik hedefini sıfır olarak belirtmek, o sütundan istatistik toplanmamasını sağlayacaktır. Sorguların
WHERE,
GROUP BY veya
ORDER BY deyimlerinin hiçbir zaman bir parçası olmayacak sütunlar için, planlamacı böyle sütunların istatistiklerini kullanmayacağından bunu yapmak faydalı olabilir.
Analizi yapılacak sütunlar arasında en geniş istatistik hedefini, istatistikleri hazırlamakta kullanılan örnek alınmış tablo satırlarının sayısı belirler. Hedefin arttırılması ANALYZE sonuçlarının kaydı için harcanan alanın ve işlem için harcanan zamanın orantılı olarak artmasına sebep olur.