0%

MySQL-小表驱动大表

小表驱动大表

小表驱动大表,即小的数据集驱动大得数据集

类似嵌套循环

1
2
3
4
5
for(int i = 5; .......)
{
for(int j = 1000; ......)
{}
}

如果小的循环在外层,对于数据库连接来说就只连接 5 次,进行 1000 次操作,如果 1000 在外,则需要进行 1000 次数据库连接,从而浪费资源,增加消耗。这就是为什么要小表驱动大表

in 与 exists

exists 可以替代 in

in

exists

in 与 exists 选择

  • 当 A 表中数据多于 B 表中的数据时,这时我们使用 IN 优于 EXISTS
  • 当 B 表中数据多于 A 表中的数据时,这时我们使用 EXISTS 优于 IN
  • 因此是使用 IN 还是使用 EXISTS 就需要根据我们的需求决定了。但是如果两张表中的数据量差不多时那么是使用 IN 还是使用 EXISTS 差别不大
  • EXISTS 子查询只返回 TRUE 或 FALSE,因此子查询中的 SELECT * 可以是 SELECT 1 或者其他
↓赏一个鸡腿... 要不,半个也行↓