About me:Oracle ACE pro,optimistic,passionate and harmonious. Focus on ORACLE,MySQL and other database programming,peformance tuning,db design, j2ee,Linux/AIX,Architecture tech,etc
全部博文(176)
发布时间:2025-02-20 08:40:55
having普通列(非聚合条件)提升到where里,在分组之前过滤,如果having的普通列可以走索引效率好,这种提升有好处
测试下来,只有pg支持,MySQL文档说支持,但是测试部支持,oracle不支持
能放到where里的条件不要放到having里,是编写SQL的准则之一......【阅读全文】
发布时间:2025-02-18 22:03:41
MySQL的RR模式下,快照读按照第一次select创建的readview读取快照数据,这是表级的,整个表所有行的快照都是在这个时间点。
快照读又叫一致性读(consistent read),unlock read,不加锁(元数据锁还是有的,行锁没有,就是普通SELECT)。
DML包括FOR UPDATE,FOR SHARED是当前读,会读取最新快照的数据,这类似幻读了。
普通SELECT在RR隔离级别下都是可重复读,快照读,除非混合了UPDATE,那么之后的SELECT会读取到本事务修改的数据,像普通的FOR UPDATE,FOR SHARE,
他们会读取到最新提交的数据,但是不影响后续的普通SELECT还是快照读,还是看不到新提交的数据。
......【阅读全文】
发布时间:2024-12-01 10:50:34
分区pruning是分区里的重要,通过partition pruning可以只访问需要的分区,实现减少IO的目的,
如果不能partition pruning,则可能全表(分区)访问,因为分区表一般很大,很显然IO很多,效率低,
当然,如果全表(分区)访问,如果有索引,也可能走索引提高效率的。
另外就算不能分区pruning,如果全局分区索引,如果走全局分区索引,也可能利用到索引分区裁剪。分区裁剪分为表分区裁剪、索引分区裁剪。
......【阅读全文】
发布时间:2024-12-01 10:29:35
分页查询必须有COUNT STOPKEY裁剪,另外要使用索引消除排序才是最高效的。注意取前N行和第M到第N行的两重嵌套和三重嵌套写法。
......【阅读全文】
发布时间:2024-10-29 17:28:15
overlap重叠查找算法:
一般用子查询实现,如果用join会导致结果集重复数量增多,因为不是1对1关系,而是1行对应多行。
使用子查询自关联,比如主表a,子查询的a取个别名b,对应的有start_date,end_date以及唯一标识id以及自关联的比如这里是staff_id
......【阅读全文】