国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

Mysql之索引小結

2024-07-24 12:59:35
字體:
來源:轉載
供稿:網友

一.MySQL通常采用下面兩種方式來訪問表中的行: (1)順序訪問 從頭到尾逐行遍歷整張表,實現全表掃描。當表中行數非常多時,非常浪費時間,并且大大降低數據庫的查詢效率。 (2)索引訪問 所謂索引,就是根據原表中的一列或者若干列建立的列值與對應記錄行之間的關系表。在列上創建了索引之后,查找數據時可以直接根據該列上的索引找到對應記錄行的位置,從而快速地查找到數據。

二.索引的存儲 索引是在存儲引擎中實現的,每種存儲引擎所支持的索引類型不一定完全相同,而且并非所有的存儲引擎都會支持所有的索引類型。

三.索引的分類 根據存儲方式的不同,在物理上分為以下兩類: (1)B-樹索引(BTree) 目前大部分索引都是以B-樹來存儲的,就是將索引采用樹的數據結構形式存儲。 (2)哈希索引 在mysql中目前只有memory存儲引擎和heap存儲引擎支持這類索引。其中,memory存儲引擎是將哈希索引作為默認索引,而且它支持B-樹索引。

根據索引的具體用途,在邏輯上分為以下幾類: (1)普通索引 (2)唯一性索引(unique) (3)主鍵 (4)全文索引(fulltext) (5)空間索引

在實際使用中,索引通常被創建成單列索引和組合索引 (1)單列索引 一個索引只包含原表中的一個列。 (2)組合索引 一個索引包含原表中的多個列。

高性能的索引策略 (1)聚集索引 (2)覆蓋索引

四.創建索引的三種方法 (1)create index語句 create index index_customers on mysql_test.customers(cust_name(3) asc);//根據客戶姓名列的前三個字符采用默認的索引類型創建一個升序索引index_customers。

create index index_cust on mysql_test.custommers(cust_name,cust_id) using btree;//根據cust_name和cust_id采用btree的索引類型創建一個復合索引index_cust

(2)create table語句 create table seller ( seller_id int not null auto_increament, seller_name char(50) not null, seller_address char(50) null, seller_contact char(50) null, PRoduct_type int(5) null, sales int null, primary key(seller_id,product_type), index index_seller(sales) );

(3)alter table語句 alter table mysql_test.seller add index index_seller_name(seller_name);//在表seller的姓名列上添加一個非唯一的索引,取名為index_seller_name

五.查看索引 show index;

六.索引的刪除 (1)drop index index_cust on mysql_test.customers; (2)alter table mysql_test.customers drop primary key,drop index index_customers;

七.對索引的進一步說明 (1)索引在提高查詢速度的同時,會降低更新表的速度。索引文件會占用磁盤空間。

創建下面的索引進行說明: create table people ( last_name varchar(50)  not null, first_name varchar(50) not null, dob date not null, gender enum(‘m’, ‘f’)  not null, key(last_name, first_name, dob) ); (2)復合索引的使用要嚴格遵循最左前綴法則。如你可以利用索引查找last name為Allen的人,僅僅使用索引中的第1列。但你不能利用索引查找在某一天出生的人。 (3)存儲引擎不能使用索引中范圍條件右邊的列。例如,如果你的查詢語句為where last_name=”Smith” and first_name like’J%’ and dob=’1976-12-23’,則該查詢只會使用索引中的前兩列,因為like是范圍查詢。 (4)不能用“not in ”和“<>”操作索引。 (5)索引不會包含有空值的列,若有空值,則索引無效。因此在數據庫設計時不要讓字段的默認值為null。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安新县| 渭源县| 黄冈市| 古田县| 云和县| 贡嘎县| 清镇市| 蓬安县| 洪雅县| 同心县| 斗六市| 荔波县| 沭阳县| 陆河县| 惠州市| 商水县| 莒南县| 丽水市| 苍山县| 遂川县| 中超| 丰台区| 苏州市| 峨边| 集安市| 潞西市| 来凤县| 五河县| 齐河县| 虎林市| 嘉黎县| 雅江县| 广平县| 黎城县| 高陵县| 伊宁县| 台南县| 广宗县| 仪陇县| 德化县| 阿坝县|