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

Poprawa szybkości zapytań:prosty SELECT w dużej tabeli postgres

Wyodrębnianie moich komentarzy do odpowiedzi:wyszukiwanie indeksu tutaj było bardzo szybkie -- cały czas poświęcono na pobieranie rzeczywistych wierszy. 23 sekundy / 7871 wierszy =2,9 milisekundy na wiersz, co jest uzasadnione w przypadku pobierania danych rozproszonych w podsystemie dysku. Poszukiwania są powolne; możesz a) dopasować swój zestaw danych do pamięci RAM, b) kupić dyski SSD lub c) uporządkować dane z wyprzedzeniem, aby zminimalizować poszukiwania.

PostgreSQL 9.2 ma funkcję zwaną skanowaniem tylko indeksu, która pozwala (zazwyczaj) odpowiadać na zapytania bez dostępu do tabeli. Możesz połączyć to z btree Właściwość index polegająca na automatycznym utrzymywaniu porządku w celu przyspieszenia tego zapytania. Wspominasz int1 , int2 i dwie pływaki:

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

Zauważ również, że to nie wymazuje w magiczny sposób poszukiwań dysku, po prostu przenosi je z czasu zapytania do czasu wstawiania. Kosztuje również miejsce na dysku, ponieważ duplikujesz dane. Mimo to jest to prawdopodobnie kompromis, którego chcesz.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy można wykonywać zapytania między bazami danych za pomocą PostgreSQL?

  2. W ramach funkcji wyzwalacza, jak uzyskać, które pola są aktualizowane?

  3. BŁĄD:odmowa uprawnień dla schematu user1_gmail_com o znaku 46

  4. Python psycopg2 nie wstawia się do tabeli postgresql

  5. Czysty sposób na korzystanie z funkcji okna postgresql w django ORM?