数据库教程:MySQL中数据类型相关的优化办法分享

有助于效率的类型选择

1、使你的数据尽可能小

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

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

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

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

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

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

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

3、将列定义为NOTNULL

这样处理更快,所需空间更少。而且有时还能简化查询,因为不需要检查是否存在特例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值。

3、必要的准则

对容易产生碎片的表使用OPTIMIZETABLE
大量进行修改的表,特别是那些含有可变长列的表,容易产生碎片。碎片不好,因为它在存储表的磁盘块中产生不使用的空间。随着时间的增长,必须读取更多的块才能取到有效的行,从而降低了性能。任意具有可变长行的表都存在这个问题,但这个问题对BLOB列更为突出,因为它们尺寸的变化非常大。经常使用OPTIMIZETABLE有助于保持性能不下降。

使用多列索引

多列索引列有时很有用。一种技术是根据其他列建立一个散列值,并将其存储在一个独立的列中,然后可通过搜索散列值找到行。这只对精确匹配的查询有效。(散列值对具有诸如“<”或“>=”这样的操作符的范围搜索没有用处)。在MySQL3.23版及上述就是数据库技术:MySQL中数据类型相关的优化办法分享的全部内容,如果对大家有所用处且需要了解更多关于mysql数据库学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/911510.html

(0)
上一篇 2021年10月25日
下一篇 2021年10月25日

精彩推荐