基於索引的SQL語句優化之一

2021-08-26 17:17:43 字數 717 閱讀 9175

避免對列的操作

任何對列的操作都可能導致全表掃瞄,這裡所謂的操作包括資料庫函式、計算表示式等等,查詢時要盡可能將操作移至等式的右邊,甚至去掉函式。   

例1:下列sql條件語句中的列都建有恰當的索引,但30萬行資料情況下執行速度卻非常慢:   

select * from record where  substrb(cardno,1,4)='5378'(13秒)

select * from record where  amount/30< 1000(11秒)

select * from record where  to_char(actiontime,'yyyymmdd')='19991201'(10秒)

由於where子句中對列的任何操作結果都是在sql執行時逐行計算得到的,因此它不得不進行表掃瞄,而沒有使用該列上面的索引;如果這些結果在查詢編譯時就能得到,那麼就可以被sql優化器優化,使用索引,避免表掃瞄,因此將sql重寫如下: 

select * from record where cardno like  '5378%'(< 1秒)

select * from record where amount  < 1000*30(< 1秒)

select * from record whereactiontime= to_date ('19991201' ,'yyyymmdd')(< 1秒)

差別是很明顯的!

SQL優化之一

在sqlserver2008 management studio中執行下列 set statistics time on goselect from information.lhbinfo where tradingdate between 2010 01 01 and 2011 06 10 god...

基於索引的sql優化 上

客服業務受到sql語句的影響非常大,在規模比較大的局點,往往因為乙個小的sql語句不夠優化,導致資料庫效能急劇下降,小型機idle所剩無幾,應用伺服器斷連 超時,嚴重影響業務的正常執行。資料庫的優化方法有很多種,在應用層來說,主要是基於索引的優化。常用建立索引的規則如下 1 表的主鍵 外來鍵必須有索...

sql語句優化五(索引的介紹)

一 索引的介紹 sql索引在資料庫優化中占有乙個非常大的比例,乙個好的索引的設計,可以讓你的效率提高幾十甚至幾百倍,在這裡將帶你一步步揭開他的神秘面紗。sql索引有兩種,聚集索引和非聚集索引,索引主要目的是提高了sql server系統的效能,加快資料的查詢速度與減少系統的響應時間 下面舉兩個簡單的...