NULL PRIMARY KEY );
INSERT INTO temp_test (id) SELECT generate_series(1, 1000000);
VACUUM FULL ANALYZE temp_test;
И теперь 2 запроса:
EXPAIN ANALYZE SELECT * FROM temp_test WHERE id IN (1, 3, 5, ... 9997)
Index Only Scan using temp_test_pkey on temp_test (cost=0.42..4852.06 rows=4999 width=8) (actual time=0.122..6.670 rows=4999 loops=1)
EXPLAIN ANALYZE SELECT * FROM temp_test WHERE id = 1 OR id = 3 OR id = 5 OR ... OR id = 9997;
Bitmap Heap Scan on temp_test (cost=13393.57..79113.56 rows=4987 width=8) (actual time=9.350..11.378 rows=4999 loops=1)
Это-же одинаковые запросы, но 2й явно дольше (в реальном проекте разница видна сильнее), причем 2й и в планировании дольше.
Что я не понимаю?
а если повторить explain оба?
Всмысле? По моим тестам OR всегда медленней, если что
еще раз их запустить. больше ничего не делая
+- такие-же соотношения
Обсуждают сегодня