|

可以通过插入数据时不断select查询观察细节
delete from t1;
delete from t1 where a in(1,4,8);
存储过程慢慢生成B+树(数据都在叶子节点)

通过explain查看一些sql语句的性能进行简单的查询
EXPLAIN SELECT * FROM t1 WHERE a > 1;
EXPLAIN SELECT * FROM t1 WHERE b = 1 AND c = 1 AND d = 1 ;
EXPLAIN SELECT * FROM t1 WHERE a = 8;
SHOW INDEX FROM t1;
所以我们创建其他索引,达到快速查询的要求。
CREATE INDEX idex_t1_bcd ON t1(b,c,d);

创建组合索引后,执行如下语句:了解key_len
EXPLAIN SELECT * FROM t1 WHERE b = 1 AND c = 1 AND d = 1 ;
EXPLAIN SELECT * FROM t1 WHERE b = 1;
EXPLAIN SELECT * FROM t1 WHERE b = 1 AND c = 1 AND e = 1 ;
练习完以上案例后,看如下图MySQL 索引,就会明白索引中原来有这么多原理和关键字

最左前缀原则
要运用组合索引时,必须从遵循最左原则(就是最左边的列必须出现在where后的第一个)
EXPLAIN SELECT * FROM t1 WHERE c = 1 AND d = 1 ;
EXPLAIN SELECT * FROM t1 WHERE b = 1 AND c > 1 AND d = 1 ;
了解了以上语句执行后效果,还有除此之外运用组合索引的特殊情况:
EXPLAIN SELECT * FROM t1 WHERE b > 1;
EXPLAIN SELECT * FROM t1 WHERE b > 6;
索引覆盖
索引覆盖的使用能够减少树的搜索次数,避免了回表
EXPLAIN SELECT b FROM t1 WHERE b > 1;
EXPLAIN SELECT a,b FROM t1 WHERE b > 1;
索引下推
MySQL5.6出现,主要用于非主键索引尤其联合索引(组合索引),减少回表查询的次数
EXPLAIN SELECT * FROM t1 WHERE b = 3 AND d = 1 ;
EXPLAIN SELECT * FROM t1 WHERE b = 3 AND e = 1 ;
以上都是int类型的索引,下面给varchar类型创建索引
CREATE INDEX idx_t1_e ON t1(e);
执行如下sql语句:数据类型转换
SELECT 1 = 1;
SELECT 1 = 0;
SELECT 1 = '1';
EXPLAIN SELECT * FROM t1 WHERE a = 1;
EXPLAIN SELECT * FROM t1 WHERE a = '1';
EXPLAIN SELECT * FROM t1 WHERE e = 1;
EXPLAIN SELECT * FROM t1 WHERE e = '1';
7.数据库文件存储
SHOW ENGINES;
7.1物理文件(顺序IO)
MySQL通过日志记录数据库操作信息和错误信息。
SHOW VARIABLES LIKE 'log_%';
默认开启。记录了运行中遇到的所有严重的错误以及MySQL每次启动和关闭的详细信息
错误日志名字;hostname.err
查看日志的文件路径:log_error
log_warings:警告信息是否开启
7.2数据文件(随机IO)
show variables like '%datadir%';
ibd为InnoDB存储,.MYD,.MYI为MyISAM存储
InnoDB数据文件
MyISAM数据文件;
SHOW GLOBAL STATUS LIKE 'innodb_buffer_pool_pages_%';
二叉树,红黑树,B-tree,B+tree
据信息,主要包括表结构的定义信息
SHOW GLOBAL STATUS LIKE 'innodb_buffer_pool_pages_%';
关键字:
(编辑:佛山站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|