我有一個表格說tbl_test
。在這張表中我有2.4 million
記錄。我運行以下三個非常緩慢且令人沮喪的查詢。從VIEW中做SELECT是非常慢的
select count(*) from tbl_test;
-- 2.4 mil records in ~9 seconds
select count(*) from tbl_test where status = 'active';
-- 2.4 mil records in ~9 seconds
select count(*) from tbl_test where status = 'inactive';
-- 0 records in ~0 seconds
我創建了一個觀點說view_tbl_test
使用以下查詢:
create view view_tbl_test as
select * from
(select count(*) count_active from tbl_test where status = 'active') x,
(select count(*) count_inactive from tbl_test where status = 'inactive') y,
(select count(*) count_total from tbl_test) z
現在,我從視圖中選擇只有單排和其採取像以前的時間相同。
select * from view_tbl_test limit 1;
我在這裏做錯了什麼?有沒有什麼辦法可以讓視圖在~0
秒內返回數據?
你爲什麼認爲從簡單的視圖(未物化視圖)選擇會更快? – 2014-10-02 11:14:34
@IgorRomanchenko如果我使用Materialized視圖,它會在任何時候返回結果嗎? – 2014-10-02 11:51:42