PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Dans PostgreSQL, problème étrange concernant les performances de citext ?

Il n'appelle pas la fonction SQL lower . Comme le dit la documentation, il essentiellement en interne appelle lower .

Les appels se produisent dans les fonctions C qui implémentent le citext opérations de comparaison. Et plutôt que d'appeler réellement lower , ils vont directement au str_tolower() sous-jacent routine. Vous pouvez le voir par vous-même dans le code source , dont la plupart sont relativement faciles à suivre dans ce cas.

Donc, ce que vous économisez, plus ou moins, c'est la surcharge de deux appels de fonction SQL par comparaison. Ce qui n'est pas négligeable, comparé au coût de la comparaison elle-même, mais vous ne remarquerez probablement jamais l'un ou l'autre à côté des autres coûts dans une requête typique.