使用外键时会使锁升级,并行度下降。例如,不使用外键的时候,只需要锁一张表,当使用外键后,需要锁两张表。
DISTINCT 值是指去重后的数量,这个数量越大,说明字段的值重复率越低,索引效果就越好。
将被关联的字段设置为索引,可以提高关联表的效率
避免出现 索引跳跃式扫描(index skip sacn)
例如:我们有一张订单表,我们对订单号、订单状态做了复合索引。但是,索引创建的时候是订单状态列在前,订单号在后。如果我们要根据一个订单号查询时,Oracle 会先在状态 A 中的订单里查该订单,然后在状态 B 中查该订单,以此类推,当在所有的状态中查询结束后合并结果,就是最终的结果,这种情况就是 索引跳跃式扫描。
UNDO 表空间:在执行事务时,会将参与事务的数据备份到 UNDO 表空间,解决读一致问题。
如果事务操作的数据量过大,会可能撑爆 UNDO 表空间
如果不写清楚列名,数据库会先查询一次列名。影响 SQL 的执行时间
IN 是把外表和内表作hash join,而 EXISTS 是对外表做 loop,每次 loop 再对内表进行查询。
使用 LIKE ‘%xxx’,尽量避免使用 LIKE ‘%xxx%’,这种会导致索引失效
UNION 会对结果进行去重,影响查询效率
左表的数据量越小,查询结果就越小。
尽量避免笛卡尔积的情况出现