1.创建表,存储引擎为myisam,对大文本字段blob使用MD5函数建立一个散列值

create table t2(id varchar(60), content blob, hash_value varchar(40))engine=myisam default charset=utf8;

2.插入数据

insert into t2 values(1, repeat('world1', 20), md5(content));

insert into t2 values(2, repeat('world2', 40), md5(content));

insert into t2 values(3, repeat('world3', 40), md5(content));

insert into t2 values(4, repeat('world4', 70), md5(content));

insert into t2 values(5, repeat('world5', 100), md5(content));

3.使用散列值查询,只用于精确匹配

select * from t2 where hash_value=md5(repeat('world4', 70));

使用散列值查询比使用blob文本字段查询速度更快,因为使用散列值匹配的长度要短得多。

4.若要进行模糊查询,可以对blob字段的前n列做前缀索引

create index idx_blob on t2(content(150));

在t2表的字段content字段的前150字节做前缀索引

5.使用explain或desc查看执行计划,是否使用了索引

mysql> explain select * from t2 where content like 'world4%';

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

| id | select_type | table | type  | possible_keys | key      | key_len | ref  | rows | Extra       |

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

|  1 | SIMPLE      | t2    | range | idx_blob      | idx_blob | 153     | NULL |    1 | Using where |

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

1 row in set (0.01 sec)

mysql> desc select * from t2 where content like 'world4%';

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

| id | select_type | table | type  | possible_keys | key      | key_len | ref  | rows | Extra       |

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

|  1 | SIMPLE      | t2    | range | idx_blob      | idx_blob | 153     | NULL |    1 | Using where |

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

1 row in set (0.00 sec)

可以看出,使用了前缀索引idx_blob。

BLOB或TEXT字段使用散列值和前缀索引优化提高查询速度的更多相关文章

  1. 关于同一密码使用generate_password_hash生成不同的密码散列值

    在python的 werkzeug.security 库中有两个函数generate_password_hash与check_password_hash用于对密码明文生成散列值以及检查密码是否与提供的 ...

  2. Windows系统散列值获取分析与防范

    LM Hash && NTLM Hash Windows操作系统通常使用两种方法对用户的明文进行加密处理,在域环境中,用户信息存储在ntds.dit中,加密后为散列值.Windows操 ...

  3. 通过case when实现SQL 多个字段合并为一列值

    with tt as (select A.GID, CASE WHEN A.IsApp='是' THEN 'APP' else '' end 'APP', CASE WHEN A.IsSmallApp ...

  4. mysql字段的适当冗余有利于提高查询速度

    CREATE TABLE `comment` (  `c_id` int(11) NOT NULL auto_increment COMMENT '评论ID',  `u_id` int(11) NOT ...

  5. mysql设置text字段为not null,并且没有默认值,插入报错:doesn't have a default value

    一.问题描述 在往数据库写入数据的时候,报错: '字段名' doesn't have a default value 本来这个错误是经常见到的,无非就是字段没有设置默认值造成的.奇怪的是,我这边报错的 ...

  6. MySQL之text字段

    TEXT类型一般分为 TINYTEXT(255长度).TEXT(65535). MEDIUMTEXT(int最大值16M),和LONGTEXT(long最大值4G)这四种,它被用来存储非二进制字符集, ...

  7. Redis命令拾遗二(散列类型)

    本文版权归博客园和作者吴双共同所有,欢迎转载,转载和爬虫请注明原文地址 :博客园蜗牛NoSql系列地址  http://www.cnblogs.com/tdws/tag/NoSql/ Redis命令拾 ...

  8. 个人理解c#对称加密 非对称加密 散列算法的应用场景

    c#类库默认实现了一系列加密算法在System.Security.Cryptography; 命名空间下 对称加密 通过同一密匙进行加密和解密.往往应用在内部数据传输情况下.比如公司a程序 和B程序 ...

  9. 数据结构和算法 – 7.散列和 Hashtable 类

    7.1.散列函数 散列是一种常见的存储数据的技术,按照这种方式可以非常迅速地插入和取回数据.散列所采用的数据结构被称为是散列表.尽管散列表提供了快速地插入.删除.以及取回数据的操作,但是诸如查找最大值 ...

随机推荐

  1. Matlab之文件读写

    读文件:  (0)自己添加 你可以将txt的一些文本数据直接拷贝到matlab窗口,然后保存为mat文件,下次就可以直接采用load函数了. (1)Load load 从Matlab的数据文件.mat ...

  2. 【NodeJS】---express配置ejs mongoose route等

    express创建项目 命令行下: express prj_name cd prj_name && npm install ejs html var ejs = require('ej ...

  3. 基础面试题——HTML/CSS

    1. 常用那几种浏览器测试?有哪些内核(Layout Engine)? (Q1)浏览器:IE,Chrome,FireFox,Safari,Opera. (Q2)内核:Trident,Gecko,Pre ...

  4. 四.CSS声明

    概述 一条CSS规则包括选择符和声明两个部分,声明又包括属性和值,属性指出要影响样式的那个方面,而值用于把属性设定成什么 每个HTML元素有很多属性,可以用CSS来设定,但值却只有少数的几种 CSS属 ...

  5. 每天一道LeetCode--58. Length of Last Word

    Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the l ...

  6. CSS之表格操作

    表格的colspan和rowspan属性参考:http://erpoperator.blog.163.com/blog/static/17899637220123993031921/ colspan是 ...

  7. 【风马一族_xml】xml的两种解析思想

    xml的解析思想 dom解析 将整个xml使用类似树的结构保存在内存中,再进行对其操作 是woc组织推荐的处理xml的一种方式 需要等到xml完全加载进内存才可以进行操作 耗费内存.当解析超大的xml ...

  8. 《ISCSI集中存储》RHEL6——CE

    集中存储的作用: 服务端的多余的分区,客户端可以拿来存储数据,并且所存储的数据直接写在服务器的硬盘上,当客户端A崩溃时,其他客户端依旧可以从服务器端访问到客户端A存储的数据. 服务器配置: Iptab ...

  9. 数字图象处理MATLAB学习

    diagram = imread('C:\Users\Administrator\Desktop\Compressed\fiter\lena256.jpg') %diagram = rgb2gray( ...

  10. WP开发笔记——控件倾斜效果

    创建一个基本的 Windows Phone 应用程序并添加 TiltEffect 类文件. 添加要倾斜的控件的分类. 全局应用 IsTiltEnabled 依赖项属性,以便为所有的指定控件提供倾斜功能 ...