我知道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
MySQL 对字符串的左侧进行索引。
如果查询使用通配符右侧,则字符串列可以使用索引:
SELECT * FROM your_table WHERE field LIKE "text%" # can use an index
但请记住,索引的长度限制为 767 字节
来自 Mysql 文档
B 树索引可用于表达式中的列比较:
使用 =、>、>=、
https://dev.mysql.com/doc/refman/8.0/en/index-btree-hash.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)