首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL中类似二进制操作的索引

MySQL中类似二进制操作的索引
EN

Stack Overflow用户
提问于 2019-04-15 08:33:30
回答 1查看 839关注 0票数 2

我知道varchar_pattern_ops存在于Postgresql中,用于在LIKE查询中进行快速、基于索引的搜索,但是MySQL有类似的功能吗?

我现在有一个Django-MySQL设置,其中我有一个在非索引字段上运行的查询,并使用一个BINARY LIKE操作,它需要超过一分钟的时间才能完成。

我的查询是从文本- text%开始的部分搜索。

这是桌子的结构。这个表实际上包含超过20个字段,但是我只包含了主键和我正在搜索的字段

代码语言:javascript
复制
+---------+---------------+------+-----+---------+-------+

| Field   | Type          | Null | Key | Default | Extra |

+-------------------------+---------------+------+-----+--

| id      | varchar(255)  | NO   | PRI | NULL    |       |

| mid     | varchar(255)  | NO   | MUL | NULL    |       |

这是个问题-

代码语言:javascript
复制
select count(*) from table where mid binary like 'text%';

这些是指数-

代码语言:javascript
复制
PRIMARY KEY index has cardinality 102820460
mid index has cardinality 756032
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-15 09:10:25

执行MySQL对字符串左侧进行索引的事实。

如果查询在右侧使用通配符,则字符串列可以使用索引:

代码语言:javascript
复制
 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55685275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档