mysql手册03_索引

mysql手册03_索引


索引是帮助MySQL进行高效率数据查询数据结构

索引的优势和劣势:

优势:提高数据检索和排序的效率
劣势:索引占用空间,更新表时,MySQL不仅要更新数据,还要更新索引信息。
BTREE结构:
以5叉BTree树为例,每层节点超出4个时,中间节点将分裂为父节点。
插入数据:C N G A H E K Q M F W L T Z D P R X Y S
插入前4个字母:
ACGN
插入H,G向上分裂:
   G
AC   HN
插入E K Q,不需分裂:
	 G
ACE		HKNQ
插入M,M向上分裂:
	 G		 M
ACE		HK		NQ
插入F W L T,不需分裂:
	 G		   M
ACEF	 HKL	  NQTW
插入Z,T向上分裂:
	 G		  M		   T
ACEF	HKL		  NQ		WZ
插入D,D向上分裂:
   D    G      M    T
AC   EF    HKL   NQ   WZ
插入P R X Y,不需分裂:
   D    G      M        T
AC   EF    HKL    NPQR     WXYZ
插入S,Q向上分裂,M向上分裂:
			    M
   D     G             Q      T
AC   EF     HKL    NP     RS     WXYZ

BTree相比二叉树,层级结构小,查询效率高!

准备工作:

创建数据库demo01
create database demo01 default charset=utf8mb4;
use demo01;

创建city表和country表并插入数据
create table city(
city_id int(11) not null auto_increment,
city_name varchar(50) not null,
country_id int(11) not null,
primary key(city_id)
) engine=innodb default charset=utf8;

create table country(
country_id int(11) not null auto_increment,
country_name varchar(100) not null,
primary key(country_id)
) engine=innodb default charset=utf8;

insert into city values(1,'西安',1);
insert into city values(2,'NewYork',2);
insert into city values(3,'北京',1);
insert into city values(4,'上海',1);

insert into country values(1,'China');
insert into country values(2,'America');
insert into country values(3,'Japan');
insert into country values(4,'UK');

索引的基本语法:

创建普通索引:
create index idx_city_name on city(city_name);

查看索引(数据表拥有默认的主键索引):
show index from city\G

*************************** 1. row ***************************
        Table: city
   Non_unique: 0
     Key_name: PRIMARY
 Seq_in_index: 1
  Column_name: city_id
    Collation: A
  Cardinality: 4
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL
*************************** 2. row ***************************
        Table: city
   Non_unique: 1
     Key_name: idx_city_name
 Seq_in_index: 1
  Column_name: city_name
    Collation: A
  Cardinality: 4
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL

删除索引:
drop index idx_city_name on city;
创建普通索引:
alter table city add index idx_city_name(city_name);
创建唯一索引:
alter table city add unique idx_city_name(city_name);
创建全文索引:
alter table city add fulltext idx_city_name(city_name);

索引的设计原则:

1. 对查询频次高,数据量大的表建立索引
2. 针对查询条件中的字段建立索引
3. 尽量使用唯一索引,区分度高,索引效率就高
4. 索引不是越多越好
5. 尽量使用短字段索引
6. 最左前缀原则
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值