分类 MySql 下的文章
一.覆盖索引
如果一个索引包含所有需要查询的字段的值,这种情况称为覆盖索引。
好处:1.减少数据的访问量;2.读取磁盘I/O减少;3.减少性能的开销;4.对应InnoDB的举簇索引,避免对主键索引的二次查询;
对于MySQL,能使用覆盖索引的只有B-Tree。
一个使用覆盖索引优化的例子:
mysql>SELECT * FROM prod...
一.独立的列
如果查询中的列不是独立的,那么MySql就不会使用索引。
独立的列:索引列不能是表达式的一部分,也不能是函数的参数。
二.前缀索引与索引选择性
索引的选择性:不重复的索引值(基数)和数据表的记录总数(T#)的比值。范围从1/T#到1之间。其中越接近1,选择性越高,则查询效率越好。
例子:计算完整列的选择性:
mysql>SE...
explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
使用方法,在select语句前加上explain就可以了:
如:
explain select surname,first_name form a,b where a.id=b.id
EXPLAIN列的解释:
tabl...
MyISAM与InnoDb使用B-Tree索引的差异:
1)MyISAM:使用前缀压缩技术,是索引更加小;通过数据的物理位置引用被索引的行;
2)InnoDB:按照原数据格式进行存储;主键引用被索引的行。
MySql B-Tree索引查询的几种匹配方式:
1.全值匹配:和所有列进行匹配;
2.匹配最左前缀:只使用索引的第一列;
3.匹配列前缀:只匹配某...
一.锁的介绍
锁
共享锁(share lock):也叫读锁(read lock),读锁是共享的,多个客户可以在同一时刻可以读取同一个资源,而互不干扰。
排他锁(exclusive lock):也叫写锁(write lock),写锁是排他的,也就是一个写锁会阻塞其他的写锁和读锁,只有这样,才能确保只有一个用户能执行写入,并防止其他用户读取正在写入的同一...