Meine Frage in Fiddle lautet wie folgt.
select * from notification where status = 0 and ( notif_id in (select notif_id from notif_user where user_id = 1) OR notif_id in (select notif_id from notif_group where group_id = 1))
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=cad284e77218eb37461e60b6308bf85f
Abfragen funktionieren wie erwartet. Gibt es jedoch Leistungsprobleme bei der Abfrage? Ist es möglich, eine innere Abfrage in eine Verknüpfung umzuwandeln?
您的子查询不是依赖子查询,而是独立的。也就是说,它们不引用您的
notification
表中的列,而只引用它们自己表中的列。所以这里没有性能问题。
您可以将子查询表示为联合查询,并比较执行计划统计信息。查看fiddle中的输出,union似乎执行稍微更好。
另一种表达方式是使用exists