作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是好奇,如果我的 SQL
数据库的表
中有数十亿行,其中一个字段
是用户名
,我必须搜索从字母 G
开始的名称,并且数据库中的数据未排序,所以 LIKE
语句会迭代每一行吗?如果我对表中的数据进行排序,是否可以使用二分搜索之类的东西来减少搜索时间(如果是)那么该怎么做?或者排序后我仍然必须坚持 LIKE
?
最佳答案
如果你这样做:
where username like 'G%'
并且没有索引,那么MySQL将扫描每一行。
SQL 中确实没有“排序表”的概念。有一个更强大的索引概念。如果您有一个索引,其中 username
是第一个(或唯一的键),那么 MySQL 通常会使用该索引进行此类查询。它可以做到这一点,因为 like
模式以常量开头。
以下内容不会使用索引:
where username like '%G'
where username like '%G%'
where left(username, 1) = 'G'
关于mysql - SQL LIKE 是否迭代表的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28530682/
我是一名优秀的程序员,十分优秀!