innodb中索引一般都是btree的實現的,就是b+樹。索引跟資料都是儲存在b+數上,對於資料樹來說,葉子節點上是資料行構成的資料頁,節點上都是主鍵索引;對於索引樹來說,葉子節點上是主鍵索引值,節點上是非聚集索引值,索引頁跟資料頁上的不管是葉子節點還是非葉子節點,都是16k大小,所以索引字段長度越小,能存放的索引記錄越多。
一般我們用索引查詢資料的流程是:先從索引中查詢到葉子節點,找到命中索引的主鍵值,然後再從資料樹中根據主鍵值找到對應的資料頁,如果我們權標掃瞄的話,就會有大量的io出現,導致慢查詢場景,索引我們用索引,但是索引使用也是需要考慮的。如果索引的區分度不大,也就是乙個索引命中的資料很多,那麼索引的效果就不明顯,相反還可能因為從索引中獲取主鍵後再去查詢資料,因為離散讀取導致查詢更慢(mmr能優化這個場景)
一般當需要由排序的要求時,優先考慮聯合索引,把查詢欄位跟排序字段構建成聯合索引,並且把排序字段放在最後,這樣可以利用索引的排序特性避免一次排序,否則出現filesorting,資料查詢會很慢。
force index可以強制使用哪個索引,但是不建議用,因為mysql能夠很好的優化。
mysql中索引有幾種:聚集索引,唯一索引,聯合索引,普通索引
聚集索引:主鍵索引,資料庫中的資料是按照主鍵的順序儲存的,就是資料樹裡面非葉子節點內的值都是主鍵值,主鍵是唯一的。
唯一索引:跟普通索引的區別是索引的值是唯一的,但是屬於非聚集索引
普通索引:相比於唯一索引來說,允許索引的值有多個
聯合索引:多個資料列構成乙個索引,一般根據使用場景構建
覆蓋索引:當我們搜尋的字段在索引中存在時,就不需要再去查詢資料表了,所以在構建索引的時候要結合業務場景選擇,如果查詢的字段通過索引樹就能確定,就不需要回表進行二次查詢了。
C Boost 初步了解
boost是由c 標準委員會成員發起 眾多c 業界高人參與設計並實現的乙個涉及面廣 質量高且業已廣泛使用的c 標準後備庫,其中 tr1已經被納入c 0x標準庫。不論從風格和內容組織上講,都可以認為boost專案是c 標準庫的延伸。截止到boost 1.43版本,boost專案擁有大約100個用途廣泛...
jquery 初步了解
js 建立函式有以下三種方法 1 函式關鍵字 function foo x 2 匿名函式 var func function x 3 建構函式 var func new function x alert x 建構函式每次執行時都解析函式主題 頻繁呼叫建構函式效率很低 並且建構函式不能遞迴使用 關鍵字...
Tomcat初步了解
http協議預設的埠號為80,如果伺服器的埠號為80,則url中的埠號可以省略,否則必須使用冒號加埠號指明埠。tomcat的埠號可在g soft apache tomcat 7.0.59 conf server.xml檔案中配置 訪問本機tomcat伺服器的方式 2.3.http 本機ip 8080...