2017-09-18 14 views
-2

Ich habe eine Postgres-Datenbank auf AWS RDS unter einer m1/small Instanz ausgeführt. Es hat eine Tabelle mit 40 Millionen Zeilen. Wenn ich etwas wie dieses abfrage:AWS RDS Postgres Abfrage Leistungsproblem

Es dauert ein paar Minuten, um eine Antwort zu erhalten. Was kann ich tun, um die Abfrageleistung der Datenbank zu verbessern? Hier

ist der Befehl create verwendet diese Tabelle zu erstellen:

CREATE TABLE public.business 
(
    id integer NOT NULL DEFAULT nextval('business_id_seq'::regclass), 
    name character varying, 
    city character varying, 
    state character varying, 
    zip character varying, 
    is_claimed integer, 
    ..., 
    ..., 
    CONSTRAINT business_pkey PRIMARY KEY (id) 
) 
WITH (
    OIDS=FALSE 
); 
ALTER TABLE public.business 
    OWNER TO administrator; 

Wenn ich laufen:

explain select * from business where name = 'Pizza House' 

ich:

1, "Seq Scan on business (cost=0.00..1481123.57 rows=22 width=636)" 
2, " Filter: ((name)::text = 'Pizza House'::text)" 

Gedanken?

+3

Bitte [Bearbeiten] Ihre Frage ein und fügen Sie die 'table'-Anweisung für die betreffende Tabelle (einschließlich aller Indizes) und der Ausführungsplan erzeugt mit' erstellen erklären (analysieren, ausführliche) '. [** Formatierter Text **] (http://dba.stackexchange.com/help/formatting) bitte, [keine Screenshots] (http://meta.stackoverflow.com/questions/285551/why-may-i -nicht-Upload-Bilder-von-Code-auf-so-wenn-eine Frage zu stellen/285557 # 285557). [Bearbeiten] Ihre Frage. Do ** not ** Postleitzahl oder zusätzliche Informationen in den Kommentaren –

+0

@a_horse_with_no_name Ich habe gerade diese Details hinzugefügt. Vielen Dank. –

Antwort

2

Wahrscheinlich werden Sie eine index auf die name Spalte setzen wollen.

Aber als Ganzes sollten Sie auf Indizes nachlesen. Dies ist eine gute Ressource:

http://use-the-index-luke.com/