Mysql
 sql >> база данни >  >> RDS >> Mysql

Производителност на RegEx срещу LIKE в MySql заявки

Възможно е да бъде по-бързо, защото условието LIKE може да бъде оценено по-бързо от регулярния израз, така че ако повечето редове се провалят на теста, може да бъде по-бързо. Въпреки това ще бъде по-бавно, ако повечето редове са успешни, тъй като трябва да се изпълнят два теста за успешни редове вместо само един. Зависи също кой израз оптимизаторът избира да изпълни първи.

Можете да наблюдавате още по-голямо ускоряване, ако имате нещо подобно:

SELECT * FROM (
   SELECT * FROM lineage_string
   WHERE lineage LIKE '179%'
) WHERE lineage regexp '^179(/|$)'

Сега може да се използва индекс за намиране на вероятни редове, защото LIKE '179%' е sargable . Много редове изобщо няма да трябва да се проверяват.

Както винаги, най-добрият начин да сте сигурни е да го измерите сами въз основа на действителните си данни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql извличане на сума php

  2. Актуализирайте MySql таблицата от CSV с помощта на PHP

  3. Достъпът е отказан за потребител в MySQL база данни

  4. MySQL заявка - намирайте нови потребители на ден

  5. PHP подготвени изявления... Свързване на променлива като числов диапазон в REGEXP?