数码资讯
MySQL中数据类型相关的优化
有助于效率的类型选择 1。使你的数据尽可能小。 最基本的优化之一是使你的数据(和索引)在磁盘上(和内存中)尽可能小,因为磁盘读取速度更快,通常使用较少的主内存,这会带来很大的改进。 您可以使用以下技术使表更好,并尽量减少存储空间: 使用最有效的(最小)型尽possible.mysql有很多专业类型,
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
有助于效率的类型选择
1。使你的数据尽可能小。
最基本的优化之一是使你的数据(和索引)在磁盘上(和内存中)尽可能小,因为磁盘读取速度更快,通常使用较少的主内存,这会带来很大的改进。
您可以使用以下技术使表更好,并尽量减少存储空间:
使用最有效的(最小)型尽possible.mysql有很多专业类型,节省磁盘空间和内存。
如果有可能使表更小,使用较小的整数类型。例如,MEDIUMINT常常比int。
如果可能的话,声明被列为非NULL,它使任何更快,你保存每个列中的一个.请注意,如果你需要在你的应用程序的NULL,你应该毫无疑问地使用它,只是避免在所有列默认设置它。
2。使用固定长度的列,不要使用可变长度列。
本标准的表经常修改,从而很容易产生碎片尤为重要。例如,炭柱应选择而不是VARCHAR列。取舍是固定长度列的使用,表占用更多的空间,但如果它可以承担这类空间,使用固定长比使用处理变长得更快。
三.列定义为非空。
这个过程速度更快,占用空间更少,有时它可以简化查询,因为不需要检查是否有特殊情况null。
4。考虑使用枚举列
如果你有一个有限数量的特定的价值观有一个专栏,你应该考虑将其转换为枚举类型的列,ENUM列的值可以更快地处理因为他们是内部用数值表示的。
斑点和文本类型
1。使用斑点和文本类型的优点
通过在应用程序中存储或解包数据,可以在单个检索操作中检索需要多个检索操作的数据,也有助于存储不容易用标准表结构或随时间变化的数据表示的数据。
2。使用小图和文本类型的可能缺点
另一方面,斑点值本身也有其固有的问题,特别是在执行大量的删除或更新操作时。
除非有必要,你应该避免找回一个大斑点或文本值。例如,SELECT *查询是不是一个好主意,除非WHERE子句确保结果可适当限制所需的线。这样做可能会把一个非常大的BLOB值漫无目的地从网络上的另一种情况是,。在另一列存储blob的身份信息是有用的。列可以进行搜索以确定所需的线,然后BLOB值从禁区线上检索。
3,必要的指导方针
为容易生成片段的表使用优化表
大量修改的表,尤其是那些具有可变长度列,很容易破碎,碎片也不好因为它产生的空间,用于存储表的磁盘块的。随着时间的推移,更多的块必须阅读获得有效行,这会降低性能。与变量任何长桌子上有这个问题,但是BLOB列的问题更为突出,因为在他们的大小的变化是非常大的。优化表经常使用有助于保持性能下降。
使用多列索引
多列索引列有时是有用的。一种方法是建立一个散列值基于其他列并将其存储在一个单独的列,然后通过搜索找到的行的哈希值,精确匹配查询才有效。(哈希值与算子如= =范围搜索是无用的)在MySQL 3.23版本以上,哈希值可以使用MD5生成()函数。哈希索引为BLOB列是特别有用的。有一点要注意的是,在MySQL 3.23.2以前的版本中,BLOB类型不能被索引。即使在3.23.2或更新的版本,哈希值的使用为鉴定值找到BLOB值也比BLOB列本身的搜索速度。
在独立表中隔离点值
在某些情况下,从表中移动到另一个侧表中的子数据列可能具有一定的意义,被删除的数据列可以转换成固定的长格式表,这将减少主表的片段,并可以利用长行集的性能。
使用分析过程检查表列
如果您使用的是MySQL 3.23或更新版本,您应该执行过程分析(),看看它提供了关于表中列的内容。
分析({ max元素,{最大内存})
它从查询中检查结果,并返回结果的分析。
马克斯元素(默认为256)是不同的价值观,分析每列的最大数目会注意的。这是用于检查的最佳柱型应该是枚举类型分析。
马克斯内存(默认值为8192)是分析试图查找所有不同值时应分配给每个列的最大内存量。
选择…从…哪里...过程分析({ max元素,{最大内存})
例如:
从学生过程分析中选择*;
从学生过程分析中选择*(16256);
在相应的输出一列为表中的每一列的列类型的最好建议。第二例子需要过程分析()不推荐枚举类型,包含16个以上的值或超过256字节。如果没有这样的限制,输出可能会很长;ENUM的定义将很难读。
根据过程分析()的输出,您可以发现一个表可以被更改为利用更有效的类型。
1。使你的数据尽可能小。
最基本的优化之一是使你的数据(和索引)在磁盘上(和内存中)尽可能小,因为磁盘读取速度更快,通常使用较少的主内存,这会带来很大的改进。
您可以使用以下技术使表更好,并尽量减少存储空间:
使用最有效的(最小)型尽possible.mysql有很多专业类型,节省磁盘空间和内存。
如果有可能使表更小,使用较小的整数类型。例如,MEDIUMINT常常比int。
如果可能的话,声明被列为非NULL,它使任何更快,你保存每个列中的一个.请注意,如果你需要在你的应用程序的NULL,你应该毫无疑问地使用它,只是避免在所有列默认设置它。
2。使用固定长度的列,不要使用可变长度列。
本标准的表经常修改,从而很容易产生碎片尤为重要。例如,炭柱应选择而不是VARCHAR列。取舍是固定长度列的使用,表占用更多的空间,但如果它可以承担这类空间,使用固定长比使用处理变长得更快。
三.列定义为非空。
这个过程速度更快,占用空间更少,有时它可以简化查询,因为不需要检查是否有特殊情况null。
4。考虑使用枚举列
如果你有一个有限数量的特定的价值观有一个专栏,你应该考虑将其转换为枚举类型的列,ENUM列的值可以更快地处理因为他们是内部用数值表示的。
斑点和文本类型
1。使用斑点和文本类型的优点
通过在应用程序中存储或解包数据,可以在单个检索操作中检索需要多个检索操作的数据,也有助于存储不容易用标准表结构或随时间变化的数据表示的数据。
2。使用小图和文本类型的可能缺点
另一方面,斑点值本身也有其固有的问题,特别是在执行大量的删除或更新操作时。
除非有必要,你应该避免找回一个大斑点或文本值。例如,SELECT *查询是不是一个好主意,除非WHERE子句确保结果可适当限制所需的线。这样做可能会把一个非常大的BLOB值漫无目的地从网络上的另一种情况是,。在另一列存储blob的身份信息是有用的。列可以进行搜索以确定所需的线,然后BLOB值从禁区线上检索。
3,必要的指导方针
为容易生成片段的表使用优化表
大量修改的表,尤其是那些具有可变长度列,很容易破碎,碎片也不好因为它产生的空间,用于存储表的磁盘块的。随着时间的推移,更多的块必须阅读获得有效行,这会降低性能。与变量任何长桌子上有这个问题,但是BLOB列的问题更为突出,因为在他们的大小的变化是非常大的。优化表经常使用有助于保持性能下降。
使用多列索引
多列索引列有时是有用的。一种方法是建立一个散列值基于其他列并将其存储在一个单独的列,然后通过搜索找到的行的哈希值,精确匹配查询才有效。(哈希值与算子如= =范围搜索是无用的)在MySQL 3.23版本以上,哈希值可以使用MD5生成()函数。哈希索引为BLOB列是特别有用的。有一点要注意的是,在MySQL 3.23.2以前的版本中,BLOB类型不能被索引。即使在3.23.2或更新的版本,哈希值的使用为鉴定值找到BLOB值也比BLOB列本身的搜索速度。
在独立表中隔离点值
在某些情况下,从表中移动到另一个侧表中的子数据列可能具有一定的意义,被删除的数据列可以转换成固定的长格式表,这将减少主表的片段,并可以利用长行集的性能。
使用分析过程检查表列
如果您使用的是MySQL 3.23或更新版本,您应该执行过程分析(),看看它提供了关于表中列的内容。
分析({ max元素,{最大内存})
它从查询中检查结果,并返回结果的分析。
马克斯元素(默认为256)是不同的价值观,分析每列的最大数目会注意的。这是用于检查的最佳柱型应该是枚举类型分析。
马克斯内存(默认值为8192)是分析试图查找所有不同值时应分配给每个列的最大内存量。
选择…从…哪里...过程分析({ max元素,{最大内存})
例如:
从学生过程分析中选择*;
从学生过程分析中选择*(16256);
在相应的输出一列为表中的每一列的列类型的最好建议。第二例子需要过程分析()不推荐枚举类型,包含16个以上的值或超过256字节。如果没有这样的限制,输出可能会很长;ENUM的定义将很难读。
根据过程分析()的输出,您可以发现一个表可以被更改为利用更有效的类型。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。