[麦先生]Mysql常用优化方法[两个不做]

 

1.选取最使用的字段属性.

思考点:MYSQL可以很好的支持大量数据的存取,但是通常而言,数据库的表越小,在它上面执行查询的速度也就越快.

常见错误:做为跟我一样的PHP初学者常犯的错误是选择默认的字段宽度,譬如在使用Navicat数据库辅助工具时,无论什么字段常常选择默认varchar(255),在小数据查询时,这样固然没有太大影响,但是进行大数据采集分析调用的时候其劣势暴漏一览无余

解决方案 : 在定义表的时候尽可能将表字段宽度设小,譬如邮编这个字段,用char(6)可以很好的完成任务;

       如果可以 我们应该使用MEDIUMINT而不是BIGIN定义整型字段;譬如省份和性别 可以选择用ENUM来定义,因为被当作数值型数据解决;

     应尽量将字段设为NOTNULL 这样数据库在做提取数据时就不用在做是否为空的判断;

2 .选择合适的存储引擎

常见问题:由于PDO的跨数据库操作(数据库的抽象层),预处理(防止sql注入),支持事务回滚(rollback),逐渐在高版本中的PHP普及和对传统数据库查询语句的摒弃,在进行数据库多数据查询时,我认为应优先选择PDO;MYSQL数据库支持两种存储引擎:innodb 和 Myisam;但是PDO在做事务处理时只支持innodb 因而在涉及表字段时应设置为engine=innodb;

解决方案: 将数据表结构引擎设置为innodb;可以用show create table 表名查看表结构,如果不是innodb可以使用:alter table 表名 engine=innodb修改引擎;

3.使用UNION来代替手动创建的临时表

思考:在需要使用临时表的两条或多条SELECT查询合并的一个查询中,我发现使用UNION创建的临时表在会话结束后自动删除,从而保证了数据库的整齐高效;

使用方法:SELECT Name Phone FROM client UNION SELECT NAME,CREATER FROM Name,BirthDate FROM author ;

 

我总结的两个不做:

  1:不做无谓的资源占用;

  2:不做让数据库猜测编程人意图的操作,数据操作指向性应明确;

posted @ 2016-04-15 21:47  麦先生  阅读(169)  评论(0编辑  收藏  举报