sql >> Databáze >  >> RDS >> PostgreSQL

V PostgreSQL, podivný problém s výkonem citextu?

Nevolá funkci SQL lower . Jak uvádí dokumentace, v podstatě interně volá lower .

K volání dochází v rámci funkcí C, které implementují citext srovnávací operace. A spíše než ve skutečnosti volat lower , přejdou přímo na základní str_tolower() rutina. Sami se o tom můžete přesvědčit v zdrojový kód , z nichž většinu lze v tomto případě poměrně snadno sledovat.

Takže to, co víceméně ušetříte, je režie dvou volání funkcí SQL na jedno srovnání. Což není zanedbatelné ve srovnání s náklady na samotné srovnání, ale pravděpodobně byste si ani jednoho z nich vedle ostatních nákladů v typickém dotazu nikdy nevšimli.




  1. Vytvořit tabulku, pokud neexistuje, z mysqldump

  2. Knihovna není načtena:@rpath/libmysqlclient.21.dylib Důvod:obrázek nebyl nalezen Chyba migrace Django pomocí ovladače mysqlclient DB a MySQL 8 s macOS

  3. Použijte CTE k UPDATE nebo DELETE v MySQL

  4. Jak používat příkaz CASE v MySQL?