MySQL常用优化方法有建立索引。
MySQL提供两种索引方式B-Tree(默认)和hash
B树索引具有范围查找和前缀查找的能力,对于有N节点的B树,检索一条记录的复杂度为O(LogN)。相当于二分查找。
哈希索引只能做等于查找,但是无论多大的Hash表,查找复杂度都是O(1)。
显然,如果值的差异性大,并且以等值查找(=、 <、>、in)为主,Hash索引是更高效的选择,它有O(1)的查找复杂度。
如果值的差异性相对较差,并且以范围查找为主,B树是更好的选择,它支持范围查找
索引失效得几种情况:
- 不能索引null得值
- 不适合键值比较少得情况
- 模糊查询
- 条件中有or条件中有一个没有索引
复合索引遵循左侧原则,例如:
例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效
MySQL常用得分析工具:explain profiles
查看哪些线程正在运行:show processlist
profiles
默认是关闭得。执行set profiling=1
开启profiles
使用步骤: