left join 空表 导致查询变慢
时间: 2023-12-02 09:41:11 浏览: 78
11012.rar
在使用left join时,如果右表中没有符合条件的记录,则会返回NULL值。如果右表中的数据量非常大,而且没有符合条件的记录,那么查询的效率就会变得非常慢。这是因为left join会将左表中的所有记录都与右表进行匹配,如果右表中的数据量非常大,那么匹配的过程就会非常耗时。
解决这个问题的方法是使用子查询或者临时表。具体来说,可以先将右表中符合条件的记录筛选出来,然后再与左表进行left join操作。这样可以大大减少匹配的数据量,提高查询效率。
以下是使用子查询的示例代码:
```sql
SELECT t1.plate_number
FROM alarm_info t1
LEFT JOIN (
SELECT plate_num, plate_color_type
FROM veh
WHERE plate_num IS NOT NULL AND plate_color_type IS NOT NULL
) t2
ON t1.plate_number = t2.plate_num AND t1.plate_color_type = t2.plate_color_type
```
以下是使用临时表的示例代码:
```sql
CREATE TEMPORARY TABLE temp_veh AS (
SELECT plate_num, plate_color_type
FROM veh
WHERE plate_num IS NOT NULL AND plate_color_type IS NOT NULL
);
SELECT t1.plate_number
FROM alarm_info t1
LEFT JOIN temp_veh t2
ON t1.plate_number = t2.plate_num AND t1.plate_color_type = t2.plate_color_type;
DROP TEMPORARY TABLE temp_veh;
```
阅读全文