Sql索引使用

2021-07-13 04:50:07 字數 1436 閱讀 6852

sql

查詢中,因為我們鍵盤輸入的總是字元型,遇到不同的資料型別,比較的時候,總是要把資料型別轉換一致,常用的思路有兩種(

oracle

為例):

新建表td_rewardworkf

,表結構如圖:

表資料百萬左右。

1,將原資料表的列

轉換成字元型別,然後和

具體條件比較,即:

to_char(oprtime,'yyyymm')>'201605'

2,原資料表的列

不變,將具體條件轉換成日期型別,即:

oprtime > to_date('201605','yyyy-mm-dd') 

兩種sql

如下:1

,select t.partnerid,t.mobileno,to_char(t.oprtime,'yyyymm') month,t.bossyxplanid

from td_rewardworkf t where yxplanid='2015010101'  and to_char(oprtime,'yyyymm')>'201604',2,

select t.partnerid,t.mobileno,to_char(t.oprtime,'yyyymm') month,t.bossyxplanid

from td_rewardworkf t where yxplanid='2015010101'  and  oprtime > to_date('201604','yyyymm')

第一種的計畫執行:

第二種的計畫執行:

可以看到,第二種明顯比第一種快很多。

回到sql

中,我們可以看到

第一種to_char(oprtime,'yyyymm')>'201604'

,是將每一行的資料的

oprtime

列to_char

,再和'201604'

比較,索引沒有起作用,需要搜尋全表,並且對每一行執行一次

to_char

,第二種,

oprtime > to_date('201604','yyyymm')

,sql

在執行之前,會先解析

sql語句,並且,如果在

oprtime

上有索引的話,這中情況下,索引會起作用,不用搜尋全表。當然,可以在

to_char(oprtime,'yyyymm')

上面建立索引,但一般不會這麼做。

sql優化 使用索引

專案中使用了大量的sql,對於查詢sql,如果沒有使用索引會對查詢速度造成很大的影響,例如如下sql select a.name,b.id from tablea a join tableb b on a.id b.other id where a.name test and b.pin 123 a...

SQL索引的使用

通過explain 檢視執行計畫,執行sql時是否使用索引 1.避免索引失效 1 全值匹配 對索引中所有列都指定具體值。該情況下,索引生效,執行效率高。2 最左字首法則 如果索引了多列,要遵守最左字首法則。指的是查詢從索引的最左前列開始,並且不跳過索引中的列。匹配最左字首法則,走索引 違背最左字首法...

如何合理使用SQL索引

1.合理使用索引 索引是資料庫中重要的資料結構,它的根本目的就是為了提高查詢效率。現在大多數的資料庫產品都採用ibm最先提出的isam索引結構。索引的使用要恰到好處,其使用原則如下 在經常進行連線,但是沒有指定為外來鍵的列上建立索引,而不經常連線的字段則由優化器自動生成索引。在頻繁進行排序或分組 即...