MySQL:字符串字段加索引
1. 使用方式
1.1 全字段加索引
给整个字段加索引,索引存储整个字段的值。
数据量较小时,查询成本高,准确度高;
数据量较大时,比较耗费空间;
1.2 前缀索引
MySQL支持前缀索引,可以定义字符串的前面的一部分字节作为索引。
查询成本低,比较节省空间;
使用前缀索引查询时,每次遇到符号查询条件的记录都要回表判断一次,增加查询语句读数据的次数,也就是增加扫描行数;
使用前缀索引时无法使用覆盖索引对查询的性能优化;
2. 使用技巧
没有绝对的技巧,使用时要根据具体情况具体分析。以下技巧仅供参考:
2.1 倒序存储
存储学号时,比如201306070110。前四个字节表示入学年份,区分度较低,此时可以采用倒序存储,然后再使用前缀索引的方式提高查询效率;
2.2 hash字段
存储邮箱时,比如 streamXXX@email.com,此时正序和倒序的区分度都比较低,这时就可以考虑hash字段的方式,不过这样就要添加一个字段存储hash后的值。
MySQL:字符串字段加索引的更多相关文章
- MySQL 笔记整理(11) --怎么给字符串字段加索引?
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 11) --怎么给字符串字段加索引? 日常工作中的登录系统,你很可能会使 ...
- mysql 排序字段与索引有关系吗?
mysql 排序字段与索引有关系吗?答案与否需要你explain一下你的sql脚本 另外记住:date_add()方法会影响Index_modify_time索引(即:时间字段索引) 一般遇到这样的 ...
- 总结: MySQL(基础,字段约束,索引,外键,存储过程,事务)操作语法
1. 显示数据库列表 show databases; # 查看当前所有数据库 show databases \G #以行的方式显示 2. 在命令行中,执行sql语句 mysql -e 'show ...
- 为什么MySQL字符串不加引号索引失效?《死磕MySQL系列 十一》
群里一个小伙伴在问为什么MySQL字符串不加单引号会导致索引失效,这个问题估计很多人都知道答案.没错,是因为MySQL内部进行了隐式转换. 本期文章就聊聊什么是隐式转换,为什么会发生隐式转换. 系列文 ...
- Mysql字符串字段判断是否包含某个字符串的3种方法
方法一: SELECT * FROM users WHERE emails like "%b@email.com%"; 方法二: 利用MySQL 字符串函数 find_in_set ...
- (转)Mysql字符串字段判断是否包含某个字符串的3种方法
方法一: SELECT * FROM users WHERE emails like “%b@email.com%”; 方法二: 利用mysql 字符串函数 find_in_set(); SELECT ...
- Mysql字符串字段中是否包含某个字符串,用 find_in_set
有这样一个需求,在Mysql数据库字符串字段(权限)中,有范围在 1 到 N 之间代表不同权限的值,分别被‘,’分开,现在要取出具有某权限的所有成员列表. 创建表: 1 CREATE TABLE ...
- Mysql字符串字段判断是否包含某个字符串的3种方法[转载]
方法一: SELECT * FROM users WHERE emails like "%b@email.com%"; 方法二: 利用mysql字符串函数 find_in_set( ...
- Mysql字符串字段判断是否包含某个字符串的方法
方法一:like SELECT * FROM 表名 WHERE 字段名 like "%字符%"; 方法二:find_in_set() 利用mysql 字符串函数 find_in_s ...
随机推荐
- Python中的logging模块【转】https://www.cnblogs.com/yelin/p/6600325.html
[转]https://www.cnblogs.com/yelin/p/6600325.html 基本用法 下面的代码展示了logging最基本的用法. 1 # -*- coding: utf-8 -* ...
- HBase Snapshot原理和实现
HBase 从0.95开始引入了Snapshot,可以对table进行Snapshot,也可以Restore到Snapshot.Snapshot可以在线做,也可以离线做.Snapshot的实现不涉及到 ...
- 46 【golang项目】完成了一个小小的播放器功能
项目地址:https://github.com/helww/mylab/tree/master/go/player 这个项目中用到了readme说明文件是一个markdown文件. 基础的控制语法,网 ...
- FortiGate双链路不同运营商上网配置
1.防火墙端口配置 2.LLB配置
- vue入门一
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 用<pre>预格式化的文本
被包围在 <pre> 标签 元素中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. 提示: <pre> 标签的一个常见应用就是用来表示计算机的源代码.
- [leetcode]96. Unique Binary Search Trees给定节点形成不同BST的个数
Given n, how many structurally unique BST's (binary search trees) that store values 1 ... n? Input: ...
- [leetcode]11. Container With Most Water存水最多的容器
Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). ...
- 源发行版 1.8 需要目标发行版 1.8以及usage of api documented as @since 1.8+
Maven项目每个Module都有单独的pom.xml,如果不在pom.xml中进行配置,则默认将Module的Language Level设置为5.所以要在pom.xml文件中添加插件进行配置. & ...
- centos 7 安装pip
1.首先检查centos 有没有安装python-pip 包, >>yum install python-pipnotice:NO package python-pip available ...