索引與排序
排序可能發生2種情況:
1: 對於覆蓋索引,直接在索引上查詢時,就是有順序的, using index
2: 先取出資料,形成臨時表做filesort(檔案排序,但檔案可能在磁碟上,也可能在記憶體中)
我們的爭取目標-----取出來的資料本身就是有序的! 利用索引來排序.(盡量不要出現filesort)
比如: goods商品表, (cat_id,shop_price)組成聯合索引,
where cat_id=n order by shop_price ,可以利用索引來排序,
select goods_id,cat_id,shop_price from goods order by shop_price;
// using where,按照shop_price索引取出的結果,本身就是有序的.
select goods_id,cat_id,shop_price from goods order by click_count;
// using filesort 用到了檔案排序,即取出的結果再次排序 MYSQL order by排序與索引關係總結
我們平常所說的索引,如果沒有特別指明,都是指b 樹結構組織的b tree索引。其中聚集索引,次要索引,覆蓋索引,復合索引,字首索引,唯一索引預設都是使用b 樹索引,統稱索引。當然,除了b 樹這種型別的索引之外,還有哈稀索引 hash index 等。這裡主要討論一下innodb b tree索引的使...
MYSQL order by排序與索引關係總結
以下內容大部分來自於這篇部落格,僅加一些個人的理解 裡主要討論一下innodb b tree索引的使用,不提設計,只管使用。b tree索引主要作用於where和order by子句。這裡討論的均在mysql server 5.1.42測試 create table friends id int 1...
索引 索引排序順序
定義索引時,應該考慮索引鍵列的資料是按公升序還是按降序儲存.公升序是預設設定,保持與 sql server 早期版本的相容性.create index,create table 和 alter table 語句的語法在索引和約束中的各列上支援關鍵字 asc 公升序 和 desc 降序 當引用表的查詢...