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

Meningkatkan kecepatan kueri:SELECT sederhana di tabel postgres besar

Mengekstrak komentar saya menjadi jawaban:pencarian indeks di sini sangat cepat -- semua waktu dihabiskan untuk mengambil baris yang sebenarnya. 23 detik / 7871 baris =2,9 milidetik per baris, yang masuk akal untuk mengambil data yang tersebar di seluruh subsistem disk. Pencarian lambat; Anda dapat a) memasukkan dataset Anda ke dalam RAM, b) membeli SSD, atau c) mengatur data Anda sebelumnya untuk meminimalkan pencarian.

PostgreSQL 9.2 memiliki fitur yang disebut pemindaian hanya indeks yang memungkinkannya (biasanya) menjawab pertanyaan tanpa mengakses tabel. Anda dapat menggabungkan ini dengan btree indeks properti secara otomatis mempertahankan pesanan untuk membuat kueri ini cepat. Anda menyebutkan int1 , int2 , dan dua float:

CREATE INDEX sometable_int1_floats_key ON sometable (int1, float1, float2);
CREATE INDEX sometable_int2_floats_key ON sometable (int2, float1, float2);

SELECT float1,float2 FROM sometable WHERE int1=<value>; -- uses int1 index
SELECT float1,float2 FROM sometable WHERE int2=<value>; -- uses int2 index

Perhatikan juga bahwa ini tidak secara ajaib menghapus pencarian disk, itu hanya memindahkannya dari waktu kueri ke waktu penyisipan. Ini juga menghabiskan ruang penyimpanan Anda, karena Anda menduplikasi data. Namun, ini mungkin trade-off yang Anda inginkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Format keluaran alternatif untuk psql

  2. Ruby on Rails:Apakah ada cara untuk menarik item dari database dan mengembalikannya dalam urutan tertentu?

  3. Perintah pengembalian baris SQL

  4. Apa cara paling elegan untuk menyimpan cap waktu dengan nanosec di postgresql?

  5. Memfaktorkan ulang fungsi PL/pgSQL untuk mengembalikan output dari berbagai kueri SELECT