sql - mysql - 加速正则表达式

标签 sql mysql regex

我有一张 table :

+--------+------------------+------+-----+---------+----------------+
| Field  | Type             | Null | Key | Default | Extra          |
+--------+------------------+------+-----+---------+----------------+
| idurl  | int(11)          | NO   | PRI | NULL    | auto_increment |
| idsite | int(10) unsigned | NO   | MUL | NULL    |                |
| url    | varchar(2048)    | NO   |     | NULL    |                |
+--------+------------------+------+-----+---------+----------------+

选择语句是:

SELECT idurl,
       url
  FROM URL
 WHERE idsite = 34
   AND url REGEXP '^https\\://www\\.domain\\.com/checkout/step_one\\.php.*'

在具有 1000000 行的表上查询需要 5 秒。 我可以通过索引或其他方式实现加速吗?

最佳答案

看起来像一个 LIKE 就足够了。 LIKE 使用 % 作为任意数量字符的通配符。

AND url LIKE 'https://www.domain.com/checkout/step_one.php%'

LIKE 不需要像 ^ 这样的起始 anchor 。只有第二个例子会匹配:

'Sherlock and Watson' LIKE 'and%'
'Sherlock and Watson' LIKE '%and%'
'Sherlock and Watson' LIKE '%and'

关于sql - mysql - 加速正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2402546/

相关文章:

sql - 如何更改 DataGrip 中的字符集?

php - 如何调试 php/MySQL COUNT(id) 返回 1 而不是总条目值

sql - mysql 5 (5.1.42) 中的多列子选择

PHP 未插入 MySQL 数据库

MySQL 连接错误 2003 (HY000) : <IP Address> (110)

python - re 模块中的贪婪和贪婪

c# - 从 c# 更新 sql 中的一个单元格

javascript - 正则表达式:我还应该使用其他东西来实现我想要的吗?

python - 使用正则表达式从字符串中提取所有电子邮件

SQL Server 2012如何查看数据?