设计一个数据库
索引问题
二叉树和平衡二叉树
B-Tree树
B+-Tree树
hash索引 优缺点
密集索引 和 稀疏索引
MyISAM 稀疏索引和其余 innoDB 只有密集索引 (汇集索引 非汇集索引)
MyISAM 的 索引和数据是分开的 innoDB的主键索引和数据是在一块的 他们表结构都是单独储存的
问题
查看数据库参数 show variables like '%quer%'
slow_query_log on/off 慢日志 slow_query_log_file 地址 慢的 sql 输出地址 long_query_time 10.00000 超过这个时间的sql 会被定义为慢sqlsql
查看系统运行中慢sql的count show status like '%slow_queriex%'
打开慢sql日志 set global slow_query_log = on ;
慢查询sql为1s set global long_query_time = 1 ;(重连回生效!!!,重启会还原!!能够配置到启动参数,)
Explain + sql
加索引sql -> alter table 表 add index idx_name(字段);
强制使用主键索引 sql + force index(primary); 有时候 count(id)不会走主键索引,由于innoDB的主键索引的叶子节点存在数据,sql优化器会优先使用某个字段的汇集索引列的索引(假若有), 因此没有索引的innoDB count比MyISAM的count慢,加个索引就行了!~~~~
最左匹配原则