[麦先生]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:不做让数据库猜测编程人意图的操作,数据操作指向性应明确;