设计一个数据库
索引问题
二叉树和平衡二叉树
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 会被定义为慢sql
查看系统运行中慢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慢,加个索引就好了!~~~~
最左匹配原则