(10)MySQL:索引

(10)MySQL:索引

-- Mysql索引
索引技术就是为了让数据库 更快的定位一条数据所采用的一种查询性能优化技术。
索引是一种有效组	合数据的方式,为快速查找到指定记录。
作用:大大提高数据库的检索速度、改善数据库性能。
MySQL索引按存储类型分类B-树索引、哈希索引。
-- Mysql索引分类:
	普通索引:基本索引类型;允许在定义索引的列中插入重复值和空值
	唯一索引:索引列数据不重复;允许有空值
	主键索引:主键列中的每个值是非空、唯一的;一个主键将自动创建主键索引
	复合索引:将多个列组合作为索引
	全文索引:支持值的全文查找;允许重复值和空值
	空间索引:对空间数据类型的列建立的索引
-- MySql创建索引的语法
-- 普通索引
	-- 直接创建普通索引:
	CREATE INDEX indexName ON mytable(username(length)); 
	-- 修改表结构的方式添加普通索引
	ALTER table tableName ADD INDEX indexName(columnName);
	-- 创建表的时候同时创建普通索引
	CREATE TABLE `table` (字段1,字段2,……,INDEX [indexName] (username(length)));
-- 唯一索引
	-- 直接创建唯一索引:
	CREATE UNIQUE INDEX indexName ON mytable(username(length)) 
	-- 修改表结构的方式添加唯一索引
	ALTER table mytable ADD UNIQUE [indexName] (username(length))
	-- 创建表的时候同时创建唯一索引
	CREATE TABLE `table` (字段1,字段2,……,UNIQUE [indexName] (username(length)));
-- 使用ALTER 命令添加和删除索引
	ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULLALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
	ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。
	ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。
	mysql> ALTER TABLE testalter_tbl ADD INDEX (c);  //在表中添加索引
	mysql> ALTER TABLE testalter_tbl DROP INDEX c;  //在 ALTER 命令中使用 DROP 子句来删除索引
-- 使用 ALTER 命令添加和删除主键
	如果想要更改列的类型而不是名称, CHANGE语法仍然要求旧的和新的列名称,即使旧的和新的列名称是一样的
	使用MODIFY来改变列的类型,此时不需要重命名
	mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;  //确保该主键默认不为空(NOT NULL)
	mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);  //添加主键索引
	mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;  //删除主键
-- MySql删除索引的语法
DROP INDEX [indexName] ON mytable;  //删除表时,该表的所有索引同时会被删除
-- MySql显示索引信息的语法
SHOW INDEX FROM table_name;
-- 索引案例:
	-- 1. 学生表的学生姓名添加一个索引
	create INDEX index_student_sname on student(s_name);
	-- 2. 查看某个表的索引
	show index from student;
	--部分结果说明
		Table:创建索引的表
		Non_unique:索引是否非唯一
		Key_name:索引的名称
		Column_name:定义索引的列字段
		Seq_in_index:该列在索引中的位置
		Null:该列是否能为空值
		Index_type:索引类型
	-- 3. 删除索引
	DROP INDEX index_student_sname on student;
	
-- 创建索引的指导原则
() 按照下列标准选择建立索引的列
1.频繁搜索的列
2.经常用作查询选择的列
3.经常排序、分组的列
4.经常用作连接的列(主键/外键)

() 请不要使用下面的列创建索引
1.仅包含几个不同值的列
2.表中仅包含几行

() 使用索引时注意事项
1.查询时减少使用*返回全部列,不要返回不需要的列
2.索引应该尽量小,在字节数小的列上建立索引
3.WHERE子句中有多个条件表达式时,包含索引列的表达式应置于其他条件表达式之前
4.避免在ORDER BY子句中使用表达式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值