我知道varchar_pattern_ops存在于Postgresql中,用于在LIKE查询中进行快速、基于索引的搜索,但是MySQL有类似的功能吗?
我现在有一个Django-MySQL设置,其中我有一个在非索引字段上运行的查询,并使用一个BINARY LIKE操作,它需要超过一分钟的时间才能完成。
我的查询是从文本- text%开始的部分搜索。
这是桌子的结构。这个表实际上包含超过20个字段,但是我只包含了主键和我正在搜索的字段
+---------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------------+---------------+------+-----+--
| id | varchar(255) | NO | PRI | NULL | |
| mid | varchar(255) | NO | MUL | NULL | |这是个问题-
select count(*) from table where mid binary like 'text%';这些是指数-
PRIMARY KEY index has cardinality 102820460
mid index has cardinality 756032发布于 2019-04-15 09:10:25
执行MySQL对字符串左侧进行索引的事实。
如果查询在右侧使用通配符,则字符串列可以使用索引:
SELECT * FROM your_table WHERE field LIKE "text%" # can use an index但是请记住,对于索引,有767字节的限制。
来自Mysql DOC
B树索引可用于在使用=、>、>=、<、<=或运算符之间的表达式中进行列比较。如果对LIKE的参数是不以通配符开头的常量字符串,则索引也可用于LIKE比较。
https://dev.mysql.com/doc/refman/8.0/en/index-btree-hash.html
https://stackoverflow.com/questions/55685275
复制相似问题