大資料量表的最佳化查詢

來源:互聯網
上載者:User

標籤:

1:索引,我們最先想到的就是建立索引,建立索引可以成倍的提升查詢的效率,節省時間。但是如果資料量太過於巨大的時候,這個時候單純的建立索引是無濟於事的,我們知道假如特別是在大資料量中統計查詢,就拿1000W資料來說吧,如果使用count函數的話,最少要50-100秒以上,當然如果你的伺服器配置夠高,處理夠快,或許會少很多但是一樣會超過10秒。 
單純的建立索引是無濟於事的。我們可以在建立索引的時候給索引加個屬性,compress,這個屬性可以將所建立的索引進行一個良好的歸類,這樣的話,查詢速度會提升5-10倍,或者更高。但是唯一的缺點是,壓縮索引只能手動建立,對於那些KEY是無法進行壓縮的,因為KEY(主鍵)是自動建立的索引,compress必選的屬性,一般預設是不建立。所以在建立壓縮索引的時候,可以找其他的關鍵字段進行壓縮,比如工單表裡面的流水號 
2:盡量少的使用那些函數,比如 IS NUll;IS NOT NULL,IN;NOT IN等這樣的匹配函數,可以使用符號程式進行操作 
3:盡量少使用子查詢,如果你寫個類,裡面模仿子查詢的效果,你就會發現,簡直在要命,我們可以使用聯集查詢,或者是外串連查詢,這樣速度會比子查詢快很多。 
4:在使用索引的時候,注意如下: 
Where子句中有“!=”將使索引失效 
select account_name from test where amount != 0  (不使用) 
select account_name from test where amount > 0  (使用) 

Where條件中對欄位增加處理函數將不使用該列的索引 
select * from emp where to_char(hire_date,‘yyyymmdd‘)=‘20080411‘ (不使用) 
select * from emp where hire_date = to_char(‘20080411‘,‘yyyymmdd‘) (使用) 

避免在索引列上使用IS NULL和 IS NOT NULL 
select * from emp where dept_code is not null  (不使用) 
select * from emp where dept_code > 0  (使用) 

萬用字元% 的使用 
select * from emp where name like ‘%A‘  (不使用索引) 
select * from emp where name like ‘A%‘  (使用索引) 

大資料量表的最佳化查詢

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.