Den anropar inte SQL-funktionen lower . Som dokumentationen säger är det i huvudsak internt anropar lower .
Anropen sker inom C-funktionerna som implementerar citext jämförelseoperationer. Och snarare än att faktiskt anropa lower , går de direkt till den underliggande str_tolower() rutin. Du kan se detta själv i källkoden , varav de flesta är relativt lätta att följa i det här fallet.
Så vad du sparar, mer eller mindre, är overheaden av två SQL-funktionsanrop per jämförelse. Vilket inte är obetydligt, jämfört med kostnaden för själva jämförelsen, men du skulle förmodligen aldrig märka någon av dem bredvid de andra kostnaderna i en typisk fråga.