Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah indeks unik lebih baik untuk kinerja pencarian kolom? (PGSQL &MySQL)

Jika data Anda unik, Anda harus membuat UNIQUE indeks pada mereka.

Ini menyiratkan tidak ada overhead tambahan dan memengaruhi keputusan pengoptimal dalam kasus tertentu sehingga dapat memilih algoritme yang lebih baik.

Di SQL Server dan di PostgreSQL , misalnya, jika Anda mengurutkan pada UNIQUE kunci, pengoptimal mengabaikan ORDER BY klausa yang digunakan setelah itu (karena tidak relevan), i. e. pertanyaan ini:

SELECT  *
FROM    mytable
ORDER BY
        col_unique, other_col
LIMIT 10

akan menggunakan indeks pada col_unique dan tidak akan mengurutkan other_col karena tidak ada gunanya.

Kueri ini:

SELECT  *
FROM    mytable
WHERE   mycol IN
        (
        SELECT  othercol
        FROM    othertable
        )

juga akan diubah menjadi INNER JOIN (sebagai lawan dari SEMI JOIN ) jika ada UNIQUE indeks pada othertable.othercol .

Indeks selalu berisi semacam penunjuk ke baris (ctid di PostgreSQL , penunjuk baris di MyISAM , kunci utama/uniquifier di InnoDB ) dan daun diurutkan pada penunjuk ini, jadi sebenarnya setiap daun indeks adalah unik dalam beberapa hal (meskipun mungkin tidak jelas).

Lihat artikel ini di blog saya untuk detail kinerja:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mana yang lebih baik untuk menulis kode PHP untuk memasukkan data?

  2. Isi Datagridview dengan data MySQL

  3. python mysqldb melarikan diri? atau %s?

  4. MySQL beberapa kolom dalam klausa IN

  5. PacketTooBigException saat menjalankan analisis sonar