可能重複:
How can I speed up the following update query?如何加快以下sql查詢?
我想運行在一個可接受的時間內現代臺式計算機上的以下查詢(例如最多15分鐘)運行的PostgreSQL 8.4:
UPDATE cap_options_rule_items
SET cap_option_id = O.id
FROM cap_options_rule_items I
JOIN cap_options_rules R
ON R.id = I.cap_options_rule_id
JOIN cap_options O
ON R.cap_engine_id = O.cap_engine_id
AND O.code = I.cap_option_code;
我想知道是否有明顯的錯誤,我正在做的索引的選擇查詢。
查詢中的表有下列多項紀錄:
- cap_options_rule_item:2208705
- cap_options_rule:430268
- cap_options:1628188
而且下面的模式(包括索引)
-- Table: cap_options_rule_items
CREATE TABLE cap_options_rule_items
(
id serial NOT NULL,
cap_options_rule_id integer,
cap_option_code integer,
"primary" boolean,
cap_option_id integer,
CONSTRAINT cap_options_rule_items_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
-- Index: index_cap_options_rule_items_on_cap_option_id
CREATE INDEX index_cap_options_rule_items_on_cap_option_id
ON cap_options_rule_items
USING btree (cap_option_code);
-- Index: index_cap_options_rule_items_on_cap_option_rule_id
CREATE INDEX index_cap_options_rule_items_on_cap_option_rule_id
ON cap_options_rule_items
USING btree (cap_options_rule_id);
-- Table: cap_options_rules
CREATE TABLE cap_options_rules
(
id serial NOT NULL,
rule_type character varying(255),
cap_engine_id integer,
CONSTRAINT cap_options_rules_pkey PRIMARY KEY (id)
) WITH (OIDS=FALSE
);
-- Index: index_cap_options_rules_on_cap_engine_id
CREATE INDEX index_cap_options_rules_on_cap_engine_id
ON cap_options_rules
USING btree (cap_engine_id);
-- Table: cap_options
CREATE TABLE cap_options
(id serial NOT NULL,
description character varying(255),
cap_engine_id integer,
cap_option_category_id integer,
basic_price numeric,
vat numeric,
default_option boolean,
created_at timestamp without time zone,
updated_at timestamp without time zone,
code integer,
CONSTRAINT cap_options_pkey PRIMARY KEY (id)
) WITH (OIDS=FALSE
);
-- Index: index_code_and_cap_engine_id_on_cap_options
CREATE INDEX index_code_and_cap_engine_id_on_cap_options
ON cap_options
USING btree (code, cap_engine_id);
謝謝!
向我們展示了'cap_options'表;你有什麼指數嗎? – 2011-12-19 19:38:26
cap_options表格位於我粘貼的模式的末尾。 – soulnafein 2011-12-19 19:56:35