PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Przy jakiej kardynalności SQL Server przełącza się na skanowanie indeksu (w porównaniu z wyszukiwaniem)

Jeśli chodzi o SQL Server, zostało to określone jako punkt krytyczny, o którym warto przeczytać wpis na blogu Kimberley. http://www.sqlskills.com/BLOGS/KIMBERLY /category/The-Tipping-Point.aspx

Punktem krytycznym jest wytyczna 25%-33% całkowitej liczby stron w tabeli, wyrażona w wierszach, np. 10k stron danych dałoby punkt krytyczny 2500-3333 wierszy. Zgodnie z wytycznymi jest to całkiem dobre i tak dobre, jak to tylko możliwe – pamiętaj, że silnik planu zapytań jest czarną skrzynką i chociaż poda plan zapytań, mówi tylko o tym, co zdecydował, a nie dlaczego.

Jeśli chodzi o przechylanie indeksu pokrycia, nie jest to w rzeczywistości bardzo łatwe, nawet przy wybranych 100% danych indeks pokrycia nadal będzie w większości przypadków szukał przeskanowania.

Ma to sens, jeśli weźmiesz pod uwagę, że optymalizator kosztów nie przypisuje żadnych rzeczywistych kosztów do hierarchii stron indeksowych, a jedynie koszt dostępu do stron liści indeksu. W tym momencie skanowanie lub wyszukiwanie 100% indeksu pokrycia kosztuje tyle samo.

Znalazłem z własnego eksperymentu (http://sqlfascination.com/2009/11/07/can-a-covering-nc-index-be-tipped ) użycie klauzuli between spowodowałoby skanowanie, ale inne klauzule where nie – z tego, co mogłem stwierdzić, sprowadzało się to wyłącznie do trasy przez silnik zapytań.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Typ kolumny RRRR-MM w PostgreSQL

  2. Auto-inkrementacja PostgreSQL wzrasta przy każdej aktualizacji

  3. Jak w Redshift/Postgres zliczyć wiersze spełniające warunek?

  4. psycopg2 COPY przy użyciu cursor.copy_from() zawiesza się przy dużych wejściach

  5. Postgres:Czy możemy mieć kolumnę auto-inkrementacji w kluczu złożonym?