PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Pada kardinalitas apa SQL Server beralih ke pemindaian indeks (vs. seek)

Dalam hal SQL Server, ini telah disebut sebagai titik kritis, di mana posting blog Kimberley adalah bacaan yang bagus tentangnya. http://www.sqlskills.com/BLOGS/KIMBERLY /category/The-Tipping-Point.aspx

Titik kritis adalah pedoman 25%-33% dari total jumlah halaman dalam tabel, dinyatakan sebagai baris, mis. 10k halaman data akan memberikan titik kritis 2500-3333 baris. Sebagai pedoman, ini cukup bagus, dan sebaik yang akan Anda dapatkan - ingat mesin rencana kueri adalah kotak hitam, dan sementara itu akan memberi Anda rencana kueri, itu hanya mengatakan apa yang diputuskan, bukan mengapa.

Namun, dalam hal memberi tip pada indeks penutup, itu sebenarnya tidak mudah, bahkan dengan 100% data yang dipilih, indeks penutup masih akan mencari lebih dari pemindaian di sebagian besar kasus.

Itu masuk akal, jika Anda menganggap bahwa pengoptimal biaya tidak menetapkan biaya nyata apa pun ke hierarki halaman indeks, biaya apa pun hanya menaikkan akses ke halaman daun indeks. Pada saat itu, pemindaian atau pencarian 100% dari indeks penutup dikenakan biaya yang sama.

Saya menemukan dari eksperimen saya sendiri (http://sqlfascination.com/2009/11/07/can-a-covering-nc-index-be-tipped ) menggunakan klausa antara akan menyebabkannya memindai, tetapi klausa lainnya tidak akan - dari apa yang saya tahu itu murni ke rute melalui mesin kueri.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres UUID dan Hibernate → tidak ada kolom yang ditemukan

  2. PGAdmin 4 gagal membuat cadangan basis data tanpa kesalahan

  3. Dapatkan elemen ke-N dari array yang kembali dari fungsi string_to_array()

  4. PostgreSQL:UPDATE menyiratkan perpindahan melintasi partisi

  5. Bagaimana cara melakukan pembaruan non-pemblokiran besar di PostgreSQL?