MySQL优化之数据类型的使用

有助于效率的类型选择

1、使你的数据尽可能小

最基本的优化之一是使你的数据(和索引)在磁盘上(并且在内存中)占据的空间尽可能小。这能给出巨大的改进,因为磁盘读入较快并且通常也用较少的主存储器。如果在更小的列上做索引,索引也占据较少的资源。

你能用下面的技术使表的性能更好并且使存储空间最小:

·尽可能地使用最有效(最小)的类型。MySQL有很多节省磁盘空间和内存的专业化类型。

·如果可能使表更小,使用较小的整数类型。例如,MEDIUMINT经常比INT好一些。

·如果可能,声明列为NOT NULL。它使任何事情更快而且你为每列节省一位。注意如果在你的应用程序中你确实需要NULL,你应该毫无疑问使用它,只是避免缺省地在所有列上有它。

2、使用定长列,不使用可变长列

这条准则对被经常修改,从而容易产生碎片的表来说特别重要。例如,应该选择 CHAR 列而不选择 VARCHAR 列。所要权衡的是使用定长列时,表所占用的空间更多,但如果能够承担这种空间的耗费,使用定长行将比使用可变长的行处理快得多。

3、将列定义为 NOT NULL

这样处理更快,所需空间更少。而且有时还能简化查询,因为不需要检查是否存在特例 NULL。

4、考虑使用 ENUM 列

如果有一个只含有限数目的特定值的列,那么应该考虑将其转换为 ENUM 列。ENUM 列的值可以更快地处理,因为它们在内部是以数值表示的。

有关BLOB和TEXT类型

1、使用BLOB和TEXT类型的优点

用 BLOB 存储应用程序中包装或未包装的数据,有可能使原来需要几个检索操作才能完成的数据检索得以在单个检索操作中完成。而且还对存储标准表结构不易表示的数据或随时间变化的数据有帮助。

2、使用BLOB和TEXT类型的可能弊端

另一方面,BLOB 值也有自己的固有问题,特别是在进行大量的 DELETE 或 UPDATE 操作时更是如此。删除 BLOB 会在表中留下一个大空白,在以后将需用一个记录或可能是不同大小的多个记录来填充。

除非有必要,否则应避免检索较大的 BLOB 或 TEXT 值。例如,除非肯定WHERE 子句能够将结果恰好限制在所想要的行上,否则 SELECT * 查询不是一个好办法。这样做可能会将非常大的 BLOB 值无目的地从网络上拖过来。这是存储在另一列中的 BLOB 标识信息很有用的另一种情形。可以搜索该列以确定想要的行,然后从限定的行中检索 BLOB 值。

时间: 2024-09-19 10:15:04

MySQL优化之数据类型的使用的相关文章

设置MySQL中的数据类型来优化运行速度的实例_Mysql

今天看了一个优化案例觉的挺有代表性,这里记录下来做一个标记,来纪念一下随便的字段定义的问题. 回忆一下,在表的设计中很多人习惯的把表的结构设计成Varchar(64),Varchar(255)之类的,虽然大多数情况只存了5-15个字节.那么我看一下下面这个案例. 查询语句:   SELECT SQL_NO_CACHE channel, COUNT(channel) AS visitors FROM xxx_sources WHERE client_id = 1301 GROUP BY clien

mysql优化小结

  1. 说到mysql,我们立刻想起它体积小.速度快.还开源的特点,所以它应用颇广.今天我们来总结一下mysql中最频繁的两个操作:插入和查询,的优化方法. 2.插入: 3.一.文本导入 4.使用LOAD DATA INFILE从文本下载数据这将比使用插入语句快20倍. 5.示例: 6.load data local infile 'C:/Users/DELL/Desktop/Description&Data/news1.txt' into table news (文件位置) 7.fields

【JAVA秒会技术之玩转SQL】MySQL优化技术(二)

MySQL优化技术(二) [前文连接]MySQL优化技术(一) (五)常用SQL优化 1.默认情况,在使用group by 分组查询时,会先分组,其后还会默认对组内其他条件进行默认的排序,可能会降低速度.这与在查询中指定order by col1, col2类似. 如果查询中包括group by但用户想要避免排序结果的消耗,则可以使用order by null禁止排序. 例子:   2.尽量使用左连接(或右连接)来替代普通多表联查.因为使用JOIN,MySQL不需要在内存中创建临时表.    s

MySQL 第九篇:Mysql 与 ORACLE 开发差异、Mysql 优化

我把MySQL的内容整理成9篇博客,学完这9篇博客虽不能说能成为大神,但是应付一般中小企业的开发已经足够了,有疑问或建议的欢迎留言讨论. Mysql 与 ORACLE 开发差异 一. 常用的基本数据类型对比 二. 常用 SQL函数以及其它语法差异 Mysql 优化 一. 数据库设计 a) 适当的违反三大范式. b) 适当建立索引. c) 对表进行水平划分(按照一个周期对表数据进行拆分). d) 对表进行垂直划分(对字段内容较长的字段进行拆分到一个新表). e) 选择合适的字段类型.能占用字节小的

我必须得告诉大家的MySQL优化原理

说起MySQL的查询优化,相信大家收藏了一堆奇淫技巧:不能使用 SELECT * .不使用NULL字段.合理创建索引.为字段选择合适的数据类型-.. 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必.因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用. MySQL逻辑架构 如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器.下图展示了MySQL的逻辑架构图

MySQL中的数据类型

MySQL中的数据类型 详情请访问官网:http://dev.mysql.com/doc/refman/5.7/en/data-types.html   官方文档:http://dev.mysql.com/doc/refman/5.7/en/opengis-geometry-model.html   1.1  MySQL有哪些数据类型? MySQL中定义数据字段的类型对数据库的优化是非常重要的.MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型.   1.数值类型 表

mysql优化小结(插入和查询)

1. 说到mysql,我们立刻想起它体积小.速度快.还开源的特点,所以它应用颇广.今天我们来总结一下mysql中最频繁的两个操作:插入和查询,的优化方法. 2.插入: 3.一.文本导入 4.使用LOAD DATA INFILE从文本下载数据这将比使用插入语句快20倍. 5.示例: 6.load data local infile 'C:/Users/DELL/Desktop/Description&Data/news1.txt' into table news (文件位置) 7.fields t

MySQL优化简明指南

mysql|优化 一.在编译时优化MySQL  如果你从源代码分发安装MySQL,要注意,编译过程对以后的目标程序性能有重要的影响,不同的编译方式可能得到类似的目标文件,但性能可能相差很大,因此,在编译安装MySQL适应仔细根据你的应用类型选择最可能好的编译选项.这种定制的MySQL可以为你的应用提供最佳性能. 技巧:选用较好的编译器和较好的编译器选项,这样应用可提高性能10-30%.(MySQL文档如是说) 1.1.使用pgcc(Pentium GCC)编译器  该编译器(http://www

十大MySQL优化技巧

WEB开发者不光要解决程序的效率问题,对数据库的快速访问和相应也是一个大问题.希望本文能对大家掌握MySQL优化技巧有所帮助. 1. 优化你的MySQL查询缓存 在MySQL服务器上进行查询,可以启用高速查询缓存.让数据库引擎在后台悄悄的处理是提高性能的最有效方法之一.当同一个查询被执行多次时,如果结果是从缓存中提取,那是相当快的. 但主要的问题是,它是那么容易被隐藏起来以至于我们大多数程序员会忽略它.在有些处理任务中,我们实际上是可以阻止查询缓存工作的. 1. // query cache d