sql >> Databáze >  >> RDS >> PostgreSQL

Zlepšení rychlosti dotazů:jednoduchý SELECT ve velké postgresové tabulce

Extrahování mých komentářů do odpovědi:vyhledávání indexu zde bylo velmi rychlé -- veškerý čas strávil načítání skutečných řádků. 23 sekund / 7871 řádků =2,9 milisekundy na řádek, což je rozumné pro načítání dat, která jsou rozptýlena v diskovém subsystému. Hledání je pomalé; můžete a) uložit svou datovou sadu do paměti RAM, b) koupit SSD nebo c) uspořádat svá data předem, abyste minimalizovali vyhledávání.

PostgreSQL 9.2 má funkci zvanou index-only scans, která mu umožňuje (obvykle) odpovídat na dotazy bez přístupu k tabulce. Můžete to zkombinovat s btree index vlastnost automatického udržování pořadí, aby byl tento dotaz rychlý. Zmiňujete int1 , int2 , a dva plovoucí:

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

Všimněte si také, že to magicky nevymaže hledání disku, pouze je přesune z času dotazu na čas vložení. Také vás to stojí úložný prostor, protože duplikujete data. Přesto je to pravděpodobně kompromis, který chcete.



  1. Jak LocalTimeStamp() funguje v PostgreSQL

  2. Jaká je maximální délka dat, která mohu vložit do sloupce BLOB v MySQL?

  3. Použití podmíněného příkazu UPDATE v SQL

  4. Proveďte příkaz Vložit a vraťte vložené ID v SQL