我有一张 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/