mysql优化之选择数据类型


对数据类型的选择,可以影响索引的使用,进而影响性能,本博文简单的说明如何在使用中,选择数据类型,以帮助查询过程中,查询命令能够更加快速的运行。


  1. 应该尽可能多的使用数值操作,而不是字符串操作。
    这个好像是显而易见的,在字符串的存储和比较过程,需要多个字节的参与。
  2. 如果”小“类型够用,就不要选用”大“类型。
    数据小,存储的时候可以使得数据表整体比较小,从而减少在磁盘读写方面的开销,另外如果有索引,较小的类型也是比较受索引欢迎的。
  3. 尽可能选择数据行的存储格式以适应存储引擎的格式。这个没得说,各种引擎有各自的数据存储方式,比如在选择VARCHAR和CHAR的时候,除了考虑数据本身是固定长度的还是可变长度的之外,还应该考虑各自的性质,如固定长度的处理速度快,虽然不节省空间。VARCHAR虽然节省空间,但处理速度不如CHAR,并且容易导致存储碎片。
  4. 尽可能的把数据声明为NOT NULL.p。这样一方面可以更快的完成对数据列的处理,另一方面我们也不用总是简单值是否为空。
  5. 考虑使用ENUM数据列。如果字符串数据列的不同取值的个数是有限的,就应该把它转换为ENUM数据列,这种类型数据列在MYSQL内部被表示为一系列数值,所以对它的处理速度很快。
  6. 对容易产生碎片的数据表进行整理。定期使用 OPTIMIZE TABLE语句有助于防止数据表查询性能的降低,该语句可以用来清理MyISAM数据表里的碎片,对于其它引擎的碎片整理,可以先转换成这种引擎格式。
  7. 把数据压缩到BLOB或者TEXT数据列里。在可能在频率的删除或者更新操作时,产生大量的内存碎片,所以也需要定期的使用OPTIMIZE TABLE。
  8. 尽量避免对很大的BLOB或TEXT值进行检索
  9. 使用人造索引
  10. 把BLOB或TEXT数据列剥离到单独一个数据表里。如果这个时候,能够使得原表得到一个固定长度,就更好。一方面减少原始数据表里的内存碎片,另一方面,在原始数据表查询时,不会把大量的数据通过网络传输。

你可能感兴趣的:(优化,mysql,table,存储,引擎,磁盘)