TEXT & BLOB

一般在保存少量字符串的时候,我们会选择 CHAR 或者 VARCHAR;而在保存较大文本时,
通常会选择使用 TEXT 或者 BLOB,二者之间的主要差别是 BLOB 能用来保存二进制数据,比
如照片;而 TEXT 只能保存字符数据,比如一篇文章或者日记。TEXT 和 BLOB 中有分别包括
TEXT、MEDIUMTEXT、LONGTEXT 和 BLOB、MEDIUMBLOB、LONGBLOB3 种不同的类型,它们
之间的主要区别是存储文本长度不同和存储字节不同,用户应该根据实际情况选择能够满足
需求的最小存储类型。

BLOB 和 TEXT 值会引起一些性能问题,特别是在执行了大量的删除操作时.
可以使用合成的(Synthetic)索引来提高大文本字段(BLOB 或 TEXT)的查询性能;

如果散列算法生成的字符串带有尾部空格,就不要把它们存储在 CHAR 或 VARCHAR 列中,它们会受到尾部空格去除的影响。合
成的散列索引对于那些 BLOB 或 TEXT 数据列特别有用。用散列标识符值查找的速度比搜索BLOB列本身的速度快很多。

create table t_synthetic (id varchar(100),context blob,hash_value varchar(40));

insert into t_synthetic values(1,'beijingbeijing',md5(context));

insert into t_synthetic values(2,repeat('beijing',2),md5(context));

insert into t_synthetic values(3,repeat('beijing 2008',2),md5(context));

SELECT * from t_synthetic where hash_value = MD5(repeat('beijing',2));

合成索引的用法,由于这种技术只能用于精确匹配,在一定程度上减
少 I/O,从而提高查询效率。如果需要对 BLOB 或者 CLOB 字段进行模糊查询,MySQL 提供了
前缀索引,也就是只为字段的前 n 列创建索引,举例如下

CREATE INDEX idx_blob ON t_synthetic(context(100));

desc select * from t_synthetic where context like 'beijing%'

在不必要的时候避免检索大型的 BLOB 或 TEXT 值。

把 BLOB 或 TEXT 列分离到单独的表中。

总结;
对于字符类型,要根据存储引擎来进行相应的选择。
对精度要求较高的应用中,建议使用定点数来存储数值,以保证结果的准确性。
对含有 TEXT 和 BLOB 字段的表,如果经常做删除和修改记录的操作要定时执行
OPTIMIZE TABLE 功能对表进行碎片整理。
日期类型要根据实际需要选择能够满足应用的最小存储的日期类型。

最新文章

  1. Sweet Alert
  2. Orleans 高级特性-目录
  3. Android安全机制(2) Android Permission权限控制机制
  4. 读<你必须知道的.NET>IL指令笔记
  5. mysql使用索引扫描来做排序
  6. YTU 2924: 文件操作--二进制文件读入
  7. Java汉字排序(2)按拼音排序
  8. 【Nginx】启动报错-端口被占用
  9. Linux iostat 命令
  10. Spring @Scheduled @Async联合实现调度任务(2017.11.28更新)
  11. 阿里云服务器上安装mysql的详细步骤
  12. 超级账本Hyperledge的关键部件说明
  13. 7.1 服务暴露前的准备-ServiceBean的装配
  14. 部署mariadb数据库到linux(源码编译安装)
  15. 面试:TCP和UDP协议
  16. Unity 国际化 多语言设置
  17. Android:ScrollView和SwipeRefreshLayout高度测量
  18. Python下Pip的安装【get-pip】
  19. (转)yum安装MariaDB(使用国内镜像快速安装,三分钟安装完毕)
  20. 一步一步在Windows下搭建React Native Android开发环境

热门文章

  1. 手把手教你用Node.js爬虫爬取网站数据
  2. RMI原理揭秘之远程对象
  3. HDU Problem D [ Humble number ]——基础DP丑数序列
  4. Jenkins 邮件收发(qq 邮箱)
  5. S - Query on a tree HDU - 3804 线段树+dfs序
  6. React 导入组件前段浏览器报错 “Cannot read property 'Component' of undefined”
  7. request中跟路径有关的api的分析
  8. ActiveMQ 事务、集群、持久订阅者、ActiveMQ监控
  9. 一文教你快速搞懂 FOC ramp function 斜坡函数的作用和实现
  10. Kubernetes笔记(三):Gitlab+Jenkins Pipeline+Docker+k8s+Helm自动化部署实践(干货分享!)