6.4 数据库:
1、B树与B+树?(4)
https://blog.csdn.net/qq_26222859/article/details/80631121
https://www.cnblogs.com/lianzhilei/p/11250589.html
2、乐观锁&悲观锁?如何实现?(3)
3、联合索引?最左匹配原则?(3)
4、数据库事务?mysql事务隔离级别?(2)
5、索引是什么 ? 数据库索引有哪些? 索引的优缺点? http://baijiahao.baidu.com/s?id=1641311517406582639&wfr=spider&for=pc https://www.jianshu.com/p/0569644498fc
② 索引的通俗解释
索引就像是图书的目录,根据目录中的页码快速找到所需内容。
③ 索引在百度百科中的解释
在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
1.普通索引 ,最基本的索引,它没有任何限制,用于加速查询
创建方法:
1.创建表的时候一起创建
CREATE TABLE mytable(
name VARCHAR(32),
INDEX index(name);
);
2.建立表之后 直接创建索引
CREATE INDEX index ON mytable(name);
3.修改表的结构
ALTER TABLE mytable ADD INDEX index ON mytable(name(11));
2.唯一索引 索引的列的值必须是唯一的但是允许有空值 如果是组合索引 则列的组合必须是唯一的
创建方法:
1.创建表的时候一起创建
CREATE TABLE mytable(
name VARCHAR(32),
UNIQUE index(name);
);
2.建立表之后 直接创建索引
CREATE UNIQUE INDEX index ON mytable(name);
3.修改表的结构
ALTER TABLE mytable ADD UNIQUE INDEX index ON mytable(name(11));
3.主键索引 是一种特殊的唯一索引 一个表只有一个主键 不能有空值 一般在建表的时候同时创建主键索引
1.创建表的时候一起创建
CREATE TABLE mytable (
id int(11) NOT NULL AUTO_INCREMENT ,
name VARCHAR(32) ,
PRIMARY KEY (id)
);
2.修改表的结构
ALTER TABLE mytable ADD CONSTRAINT t1_pk PRIMARY KEY (id);
4.组合索引 是指多个字段上创建的索引 只有在查询条件中使用了创建索引的第一个字段 索引才会被使用 使用组合索引应该遵循最左前缀集合
a. 建表的时候一起创建
CREATE TABLE mytable (
`id` int(11) ,
`name` VARCHAR(32) ,
INDEX index_mytable_id_name (`id`,`name`)
);
b. 建表后,直接创建索引
CREATE INDEX index_mytable_id_name ON mytable(id,name);
c. 修改表结构
ALTER TABLE mytable ADD INDEX index_mytable_id_name (id,name);
5.全文索引 主要用来查找文本中的关键字 而不是直接与索引中的值相比较
更像是一个搜索引擎不是简单的where参数匹配 全文索引配合match agains使用
创建方法:
a. 建表的时候一起创建
CREATE TABLE `article` ( `id` int(11) NOT NULL AUTO_INCREMENT , `title` char(250) NOT NULL , `contents` text NULL , `create_at` int(10) NULL DEFAULT NULL , PRIMARY KEY (`id`), FULLTEXT (contents) );
b. 建表后,直接创建索引
CREATE FULLTEXT INDEX index_article_contents ON article(contents);
c. 修改表结构
ALTER TABLE article ADD FULLTEXT INDEX index_article_contents (contents);
优点
1.大大加快数据的检索速度;
2.创建唯一性索引,保证数据库表中每一行数据的唯一性;
3.加速表和表之间的连接;
4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
缺点
1.索引需要占物理空间。
2.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
6、redis了解吗?一致性哈希如何优化(虚拟结点)?(2)
7、数据库引擎(innodb、mysima)?(2)
8、数据库优化(如何定位慢查询?如何改进?)?(1)
事务的特性 锁机制 数据库引擎