Assez nouveau pour postgres et semblent avoir un problème ici, et je ne suis pas sûr de la direction à prendre.
J'ai une requête qui est à l'origine de certains problèmes de performances et je ne peux pas travailler sur la façon de l'optimiser.
La requête est en fait assez simple:
SELECT transactions.* FROM transactions
LEFT OUTER JOIN companies ON "companies"."id" = "transactions"."company_id"
WHERE companies.code ILIKE '%777%'
ORDER BY transactions.id desc LIMIT 10
Je veux trouver toutes les opérations qui sont pour une entreprise qui a 777 dans le nom. Il y a environ s'élevant à 20 millions de transactions dans la base de données et à environ 200 entreprises.
La requête en cours des temps, même si nous avons une LIMITE de 10. Je crois que c'est parce que le ILIKE est pas l'utilisation d'un index de sorte qu'il est horriblement lent.
Serait-ce un cas où vous voudrez peut-être ajouter de l'endroit OÙ le filtre à la REJOINDRE à la place? J'ai testé et ça marche ultra-rapide SI un enregistrement est trouvé. Si aucun enregistrement n'est trouvé de nouveau fois sur.
Est-il un type d'Indice, nous devrions être à la recherche à ce qui permettrait d'améliorer la vitesse ici?