PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

In PostgreSQL, strano problema sulle prestazioni del citext?

Non chiama la funzione SQL lower . Come dice la documentazione, essenzialmente internamente chiama lower .

Le chiamate avvengono all'interno delle funzioni C che implementano il citext operazioni di confronto. E invece di chiamare effettivamente lower , vanno direttamente al str_tolower() sottostante routine. Puoi vederlo di persona nel codice sorgente , la maggior parte dei quali è relativamente facile da seguire in questo caso.

Quindi quello che stai salvando, più o meno, è il sovraccarico di due chiamate di funzioni SQL per confronto. Il che non è insignificante, rispetto al costo del confronto stesso, ma probabilmente non noterai mai nessuno dei due accanto agli altri costi in una query tipica.