数据库索引

347 阅读1分钟

设计一个数据库

索引问题

二叉树和平衡二叉树

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慢,加个索引就好了!~~~~

最左匹配原则