相信很多人寫sql,但是都沒有用到過索引,甚至不知道索引為何物?當然,很多功能不需要用索引頁能實現,那麼微軟為什麼還要設計索引這個工具呢?簡單來說,就是為了提高效能。
比如說:新華字典中有很多字,我們要查其中的某乙個字,怎麼查?
方法一:剛開始我們可以拼音查詢,恰好字典中字的排序就是拼音。
方法二:偏旁查詢,可以將該字進行拆分,取出偏旁進行查詢。
通過模擬的思維,就可以得到索引的思路,具體如下:
問題一:假定一張表中有10w條資料,要快速的查詢到某個條件下的資料,是不是相當於要遍歷整張表呢?這樣做的效率是非常低的,有沒有更好的辦法?
於是我們可以建立某個條件的索引,並且這個索引是聚集索引,相當於通過這個索引頁是可以查詢到相應的資料頁的。
問題二:每張表可以存在多個聚集索引嗎?
每張表只能有乙個聚集索引(以字典為例:設定了拼音為聚集索引,則如果再設定偏旁為聚集索引,那麼拼音就不是聚集索引了,即就是聚集索引同一時間只能有乙個)。
問題三:聚集索引和主鍵之間有聯絡嗎?
聚集索引和主鍵之間沒有必然的聯絡,只是在建表的過程中,我們設定了主鍵,系統預設為我們建立了聚集索引。但如果先設定聚集索引,再設定主鍵,就可以看到兩者之間沒有必然的聯絡。主鍵是為了控制資料的邏輯順序,但聚集索引時控制了資料的物理儲存順序。
問題四:非聚集索引的使用
非聚集索引包括兩種型別:堆上的非聚集索引和聚集表上的非聚集索引(參見這裡寫鏈結內容)當使用堆上的非集群索引,不能找到實際的資料,但是可以找到能夠直接獲得資料的識別符號(僅僅多了一步);聚集表上的非聚集索印是將聚集索引和非聚集索引進行了綜合,先進行非聚集索引,得到非聚集索引的列表,然後再按照聚集索引的原理處理資料。
以上只是個人的看法,不一定正確,歡迎指正討論。
SQL索引的使用
通過explain 檢視執行計畫,執行sql時是否使用索引 1.避免索引失效 1 全值匹配 對索引中所有列都指定具體值。該情況下,索引生效,執行效率高。2 最左字首法則 如果索引了多列,要遵守最左字首法則。指的是查詢從索引的最左前列開始,並且不跳過索引中的列。匹配最左字首法則,走索引 違背最左字首法...
SQL中的索引
今天面試問到乙個東西 索引,我懵逼了,只知道這東西可以進行sql優化,但是根本不知道其中的原理。原文 實際上,索引可以理解成一種特殊的目錄。微軟的sql server提供了兩種索引 聚集索引 也可稱為聚類索引 簇集索引 和非聚集索引 當然也可以稱為非聚類索引 非簇集索引 下面,我們舉例來說明一下聚集...
Sql索引使用
sql 查詢中,因為我們鍵盤輸入的總是字元型,遇到不同的資料型別,比較的時候,總是要把資料型別轉換一致,常用的思路有兩種 oracle 為例 新建表td rewardworkf 表結構如圖 表資料百萬左右。1,將原資料表的列 轉換成字元型別,然後和 具體條件比較,即 to char oprtime,...