快速业务通道

MySQL优化全攻略-相关数据库命令

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-16
)  
tt AssignedPC CHAR(10)  
tt ClientID CHAR(10)  
et EMPLOYID CHAR(15)  
do CUSTNMBR CHAR(15)  
  

  ※索引  

表 索引  
tt ActualPC  
tt AssignedPC  
tt ClientID  
et EMPLOYID (主键)  
do CUSTNMBR (主键)  


   ※tt.ActualPC值分布不均匀  

   在进行任何优化之前,EXPLAIN对SELECT执行分析的结果如下:  


table type possible_keys        key key_len ref rows Extra
et  ALL PRIMARY           NULL NULL  NULL 74
do  ALL PRIMARY           NULL NULL  NULL 2135
et_1 ALL PRIMARY           NULL NULL  NULL 74
tt  ALL AssignedPC,ClientID,ActualPC NULL NULL  NULL 3872
   range checked for each record (key map: 35)

  


   每一个表的type都是ALL,它表明MySQL为每一个表进行了完全连接!这个操作是相当耗时的,因为待处理行的数量达到每一个表行数的乘积!即,这里的总处理行数为74 * 2135 * 74 * 3872 = 45,268,558,720。  

   这里的问题之一在于,如果数据库列的声明不同,MySQL(还)不能有效地运用列的索引。在这个问题上,VARCHAR和CHAR是一样的,除非它们声明的长度不同。由于tt.ActualPC声明为CHAR(10),而et.EMPLOYID声明为CHAR(15),因此这里存在列长度不匹配问题。  

   为了解决这两个列的长度不匹配问题,用ALTER TABLE命令把ActualPC列从10个字符扩展到15字符,如下所示:  


mysql > ALTER TABLE tt MODIFY ActualPC VARCHAR(15);

  

   现在tt.ActualPC和et.EMPLOYID都是VARCHAR(15)了,执行EXPLAIN进行分析得到的结果如下所示:  


table type  possible_keys  key   key_len ref     rows  Extra
tt  ALL  AssignedPC,Clie

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号