(language_id, state) dizinli bir sözcük tablom var.Postitlerde LIMIT kullanıldığında dizin kullanılmıyor
Sınırsız
explain analyze SELECT "words".* FROM "words" WHERE (words.language_id = 27) AND (state IS NULL);
Bitmap Heap Scan on words (cost=10800.38..134324.10 rows=441257 width=96) (actual time=233.257..416.026 rows=540556 loops=1)
Recheck Cond: ((language_id = 27) AND (state IS NULL))
-> Bitmap Index Scan on ls (cost=0.00..10690.07 rows=441257 width=0) (actual time=230.849..230.849 rows=540556 loops=1)
Index Cond: ((language_id = 27) AND (state IS NULL))
Total runtime: 460.277 ms
(5 rows)
Limiti 100
explain analyze SELECT "words".* FROM "words" WHERE (words.language_id = 27) AND (state IS NULL) LIMIT 100;
Limit (cost=0.00..51.66 rows=100 width=96) (actual time=0.081..0.184 rows=100 loops=1)
-> Seq Scan on words (cost=0.00..227935.59 rows=441257 width=96) (actual time=0.080..0.160 rows=100 loops=1)
Filter: ((state IS NULL) AND (language_id = 27))
Total runtime: 0.240 ms
(4 rows)
neden oluyor: İşte EXPLAIN için sonuçlar ANALİZ nelerdir? Her durumda kullanılacak endeksi nasıl alabilirim?
Teşekkürler.
SIPARIŞ SİPARİŞİ olmayan bir LIMIT sınırlı (punto amaçlı değil) bir değer olarak görünüyor. Hangi 100 satır iade edilmeyi bekliyorsunuz? –
BTW: language_id = 17 VE ISI NULL deyiminin seçiciliği nedir? kelimeler tablosunun toplam büyüklüğü nedir? – wildplasser
true ... sipariş, DESC'de gerçekleşir. Bu onu yavaşlatabilir mi? Bu sütunda bir dizin gerekli mi? @wildplasser toplam boyutu 10 milyon satırdır, seçicilik yaklaşık 500.000 satırdır – alste