私はいくつかの古いコードをリファクタリングしていて、この名前の付いたクエリに出くわしました(mysqlの上で休止状態を使用しています):
delete F from
foo F
inner join user DU on F.user_id = DU.id
where
(COALESCE(:userAlternateId,null) is null or DU.alternate_id like :userAlternateId )
and ( COALESCE(:fooId,null) is null or F.foo_id like :fooId )
and (
( COALESCE(:fromUpdated,null) is null or F.updated_at>=:fromUpdated )
and ( COALESCE(:toUpdated,null) is null or F.updated_at<=:toUpdated )
)
なぜこれがこのように使用されているのかわかりませんCOALESCE
:
COALESCE(:userAlternateId,null) is null
これはパフォーマンスハックですか、それともクエリデータベースを独立させますか...?
btwuserAlternateId
は文字列/変数であり、他のIDはlongでありfrom-to
、日付です