PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Подобряване на скоростта на заявка:прост SELECT в голяма таблица Postgres

Извличане на коментарите ми в отговор:търсенето на индекс тук беше много бързо - цялото време беше прекарано в извличане на действителните редове. 23 секунди / 7871 реда =2,9 милисекунди на ред, което е разумно за извличане на данни, които са разпръснати в дисковата подсистема. Търсенето е бавно; можете а) да поставите набора си от данни в RAM, б) да закупите SSD дискове или в) да организирате данните си предварително, за да сведете до минимум търсенията.

PostgreSQL 9.2 има функция, наречена сканиране само с индекс, която му позволява (обикновено) да отговаря на заявки без достъп до таблицата. Можете да комбинирате това с btree свойство индекс за автоматично поддържане на реда, за да направи тази заявка бърза. Споменавате int1 , int2 , и две плувки:

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

Имайте предвид също, че това не изтрива магически търсенията на диска, а просто ги премества от времето на заявка към времето за вмъкване. Това също ви струва място за съхранение, тъй като дублирате данните. Все пак това вероятно е компромисът, който искате.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Получаване на грешка:Peer удостоверяването е неуспешно за потребител postgres, когато се опитва да накара pgsql да работи с релси

  2. Анализиране на PostgreSQL таблична статистика

  3. Как да промените стила на рамката на таблицата в резултатите от заявката на psql

  4. Персонализирано SERIAL / автоматично увеличение на група стойности

  5. Инсталирайте PostgreSQL на Ubuntu 20.04