- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MySQL查询优化系列讲座之数据类型与服从
MySQL查询优化系列讲座之数据类型与效率
这一部分提供了如何选择数据类型来帮助提高查询运行速度的一些指导:
在可以使用短数据列的时候就不要用长的。如果你有一个固定长度的CHAR数据列,那么就不要让它的长度超出实际需要。如果 你在数据列中存储的最长的值有40个字符,就不要定义成CHAR(255),而应该定义成CHAR(40)。如果你能够用MEDIUMINT代替 BIGINT,那么你的数据表就小一些(磁盘I/O少一些),在计算过程中,值的处理速度也快一些。如果数据列被索引了,那么使用较短的值带来的性能提高 更加显著。不仅索引可以提高查询速度,而且短的索引值也比长的索引值处理起来要快一些。 如果你可以选择数据行的存储格式,那么应该使 用最适合存储引擎的那种。对于MyISAM数据表,最好使用固定长度的数据列代替可变长度的数据列。例如,让所有的字符列用CHAR类型代替 VARCHAR类型。权衡得失,我们会发现数据表使用了更多的磁盘空间,但是如果你能够提供额外的空间,那么固定长度的数据行被处理的速度比可变长度的数 据行要快一些。对于那些被频繁修改的表来说,这一点尤其突出,因为在那些情况下,性能更容易受到磁盘碎片的影响。 · 在使用可变长度的数据行的时候,由于记录长度不同,在多次执行删除和更新操作之后,数据表的碎片要多一些。你必须使用OPTIMIZE TABLE来定期维护其性能。固定长度的数据行没有这个问题。 · 如果出现数据表崩溃的情况,那么数据行长度固定的表更容易重新构造。使用固定长度数据行的时候,每个记录的开始位置都可以被检测到,因为这些位置都是固定 记录长度的倍数,但是使用可变长度数据行的时候就不一定了。这不是与查询处理的性能相关的问题,但是它一定能够加快数据表的修复速度。 尽管把MyISAM数据表转换成使用固定长度的数据列可以提高性能,但是你首先需要考虑下面一些问题: · 固定长度的数据列速度较快,但是占用的空间也较大。CHAR(n)列的每个值(即使是空值)通常占n个字符,这是因为把它存储到数据表中的时候,会在值的 后面添加空格。VARCHAR(n)列占有的空间较小,因为只需要分配必要的字符个数用于存储值,加上一两个字节来存储值的长度。因此,在CHAR和 VARCHAR列之间进行选择的时候,实际上是时间与空间的对比。如果速度是主要的考虑因素,那么就使用CHAR数据列获取固定长度列的性能优势。如果空 间很重要,那么就使用VARCHAR数据列。总而言之,你可以认为固定长度的数据行可以提高性能,虽然它占用了更大的空间。但是对于某些特殊的应用程序, 你可能希望使用两种方式来实现某个数据表,然后运行测试来决定哪种情况符合应用程序的需求。 · 即使愿意使用固定长度类型,有时候你也没有办法使用。例如,长于255个字符的字符串就无法使用固定长度类型。 MEMORY数据表目前都使用固定长度的数据行存储,因此无论使用CHAR或VARCHAR列都没有关系。两者都是作为CHAR类型处理的。 对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度列(所有数据行都使用指向数据列值的头指针),因此在本质上,使用固定长度的 CHAR列不一定比使用可变长度VARCHAR列简单。因而,主要的性能因素是数据行使用的存储总量。由于CHAR平均占用的空间多于VARCHAR,因 此使用VARCHAR来最小化需要处理的数据行的存储总量和磁盘I/O是比较好的。 对于BDB数据表,无论使用固定长度或可变长度的数据列,差别都不大。两种方法你都可用试一下,运行一些实验测试来检测是否存在明显的差别。 把数据列定义成不能为空(NOT NULL)。这会使处理速度更快,需要的存储更少。它有时候还简化了查询,因为在某些情况下你不需要检查值的NULL属性。 考虑使用ENUM数据列。如果你拥有的某个数据列的基数很低(包含的不同的值数量有限),那么可以考虑把它转换为ENUM列。ENUM值可以被更快地处理,因为它们在内部表现为数值。 使用PROCEDURE ANALYSE()。运行PROCEDURE ANALYSE()可以看到数据表中列的情况:
SELECT * FROM tbl_name PROCEDURE ANALYSE();SELECT * FROM tbl_name PROCEDURE ANALYSE(16,256); 输出的每一列信息都会对数据表中的列的数据类型提出优化建议。第二个例子告诉PROCEDURE ANALYSE()不要为那些包含的值多于16个或者256字节的ENUM类型提出建议。如果没有这样的限制,输出信息可能很长;ENUM定义通常很难阅读。 根据的PROCED
您可能关注的文档
- K歌赛主题活动策划履行案.doc
- L CNG综合站上风.doc
- L CNG加气站技巧方案.doc
- L1814综采工作面装置工程施工组织设计.doc
- L1815综采工作面供电系统计划.doc
- L013 新一代WNAC智能无线控制器和胖瘦一体AP产物介绍.doc
- l1月国家物业管理师技能判定试卷及答案全.doc
- L9合同段T梁预制施工技能方案.doc
- Labview实行指导书.doc
- labview运用技巧.doc
- 《5G技术在智能工厂物料管理中的实时跟踪与优化策略》教学研究课题报告.docx
- 高中政治议题式教学中的案例教学策略研究教学研究课题报告.docx
- 温度传感器设计原理与应用.pptx
- 高中英语概要写作教学中的词汇运用策略研究教学研究课题报告.docx
- 《会展服务企业服务质量提升中的顾客满意度提升与市场响应关系研究》教学研究课题报告.docx
- 2024-2025学年湖南株洲市第十八中学高三元月调研测试英语试题试卷含解析.doc
- 2024-2025学年湖南省长沙铁路第一中学高三第三次测评语文试题试卷含解析.doc
- 2025至2030年中国聚醋酸乙烯酯行业市场运行格局及发展前景研判报告.docx
- 2025至2030年中国聚酰胺行业市场发展态势及投资前景研判报告.docx
- 基于开源硬件的高中信息技术课程教学策略研究与实践教学研究课题报告.docx
最近下载
- H3C Workspace云桌面 客户端定制配置指导(办公场景)-5W104.pdf
- 小学班队活动设计方案.pptx VIP
- 国开电大 道路工程 形考任务1-4答案.pdf VIP
- 小学班队工作原理与实践教案.doc VIP
- 701-第七章-小学班队活动管理.pptx VIP
- 2025年混凝土质量控制及管理制度(二篇) .pdf VIP
- 在线网课学堂《领导学:领导力成长路线图》单元测试考核答案.pdf
- GB 44022-2024硝酸铵安全技术规范解读.pptx VIP
- 在线网课学习课堂《人工智能与生物特征识别(北理 )》单元测试考核答案.pdf VIP
- Unit 5 Is this your pen (说课稿)-2024-2025学年湘少版(三起)(2024)英语三年级上册.docx VIP
文档评论(0)