Kullanılmayan index'leri tespit et
Oracle
-- İzlemeyi başlat:
ALTER INDEX musteri_il_idx MONITORING USAGE;
-- Bir süre sonra kontrol et (12c+, tüm şemalar):
SELECT owner, index_name, used FROM dba_object_usage;USED = NO ise index izleme süresince kullanılmamıştır. İzlemeyi NOMONITORING USAGE ile kapatın. Eski v$object_usage yalnızca oturum kullanıcısının index'lerini gösterir ve 12c'den beri kullanımdan kaldırılmıştır (deprecated). 12.2+ sürümlerde index kullanımı DBA_INDEX_USAGE ile otomatik izlenir.
PostgreSQL
SELECT relname AS table, indexrelname AS index, idx_scan
FROM pg_stat_user_indexes
WHERE idx_scan = 0
ORDER BY relname;idx_scan = 0 istatistik sıfırlanmasından beri hiç kullanılmadığını gösterir; UNIQUE/PK'leri düşürmeyin.
MySQL
SELECT * FROM sys.schema_unused_indexes;performance_schema açık olmalı ve sunucu bir süredir çalışıyor olmalı; UNIQUE constraint'leri hariç tutulur.
SQL Server
SELECT OBJECT_NAME(i.object_id) AS table_name, i.name AS index_name
FROM sys.indexes i
LEFT JOIN sys.dm_db_index_usage_stats s
ON i.object_id = s.object_id AND i.index_id = s.index_id
AND s.database_id = DB_ID()
WHERE i.type_desc = 'NONCLUSTERED'
AND COALESCE(s.user_seeks + s.user_scans + s.user_lookups, 0) = 0;usage_stats sunucu yeniden başlayınca sıfırlanır; yeterli gözlem penceresi bırakın.
MongoDB
db.musteri.aggregate([{ $indexStats: {} }])
// accesses.ops düşük/0 olan indeksler adayaccesses.since alanından beri gelen erişim sayısıdır; _id index'ini silemezsiniz.
Redis
# Uygulanamaz: Redis çekirdeğinde ikincil indeks yoktur.
# RediSearch modülü kullanılıyorsa FT.INFO <index> ile istatistiklere bakılır.Veri modeli anahtar-değer olduğundan geleneksel index kavramı yoktur.