Mysql in/exist/join 策略分析

测试数据 创建两个表t1和t2,它们格式完全相同,区别在与数据量t1是1k,t2是100k。另外需要注意的是三个字段的区别,id是主键,a是索引字段,b则无索引,下面我们会比较不同类型字段对查询的影响。 in 按主键id关联 按索引字段a关联 首先mysql会选择外层表为驱动表,in包含的表则为被驱动表,这不会随着数据量的变化而变化。确定驱动表后,如果驱动表是小表,则使用FirstMatch策略匹 …

Mysql实战记录 – FOR UPDATE 之怪现象

非索引字段锁全表 有表: 执行以下操作会被锁住, 注意date=’2011-05-02’并不在[2011-05-03,∞)范围内, 但依然被锁住. Connection1 Connection2 BEGIN; SELECT * FROM notification WHERE date >= ‘2011-05-03’ …

Mysql Limit 字句优化

LIMIT字句常用的语法类似于: LIMIT m,n, 针对不同的情况, MySQL会对查询做一些优化.总的来说性能主要由以下几个条件决定: LIMIT遍历数据量少, 性能高 LIMIT通过索引实现筛选, 性能比较高 LIMIT找到所需的数据就停止排序, 性能优于先完整排序再截取数据 语句整体能被索引覆盖, 不需要回表, 性能比较高 下面分别举例说明: 普通SELECT + LIMIT …