首页 » PHP教程 » php优化SQL语句技巧_MySQL优化之SQL语句调优

php优化SQL语句技巧_MySQL优化之SQL语句调优

访客 2024-11-11 0

扫一扫用手机浏览

文章目录 [+]

①利用group by 分组查询是,默认分组后,还会排序,可能会降落速率,

在group by 后面增加 order by null 就可以防止排序.

php优化SQL语句技巧_MySQL优化之SQL语句调优

explain select from emp group by deptno order by null;

php优化SQL语句技巧_MySQL优化之SQL语句调优
(图片来自网络侵删)

②有些情形下,可以利用连接来替代子查询。
由于利用join,MySQL不须要在内存中创建临时表。

select from dept, emp where dept.deptno=emp.deptno; [大略处理办法]

select from dept left join emp on dept.deptno=emp.deptno; [左外连接,更ok!]

③对查询进行优化,要只管即便避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引

应只管即便避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃利用索引而进行全表扫描,如:

select id from t where num is null

最好不要给数据库留 NULL,尽可能的利用 NOT NULL 填充数据库.

备注、描述、评论之类的可以设置为 NULL,其他的,最好不要利用 NULL。

不要以为 NULL 不须要空间,比如:char(100) 型,在字段建立时,空间就固定了, 不管是否插入值(NULL 也包含在内),都是占用 100 个字符的空间的,如果是 varchar 这样的变长字段, null 不占用空间。

可以在 num 上设置默认值 0,确保表中 num 列没有 null 值,然后这样查询:

select id from t where num = 0

更多mysql sql语句调优查看http://bbs.itmayiedu.com/article/1511164574773

MySQL数据引擎

利用的存储引擎 myisam / innodb/ memory

myisam 存储: 如果表对事务哀求不高,同时因此查询和添加为主的,我们考虑利用myisam存储引擎. ,比如 bbs 中的 发帖表,回答表.

INNODB 存储: 对事务哀求高,保存的数据都是主要数据,我们建议利用INNODB,比如订单表,账号表.

MyISAM 和 INNODB的差异

事务安全(MyISAM不支持事务,INNODB支持事务)查询和添加速度(MyISAM批量插入速率快)支持全文索引(MyISAM支持全文索引,INNODB不支持全文索引)锁机制(MyISAM时表锁,innodb是行锁)外键 MyISAM 不支持外键, INNODB支持外键. (在PHP开拓中,常日不设置外键,常日是在程序中担保数据的同等)Memory 存储,比如我们数据变革频繁,不须要入库,同时又频繁的查询和修正,我们考虑利用memory, 速率极快. (如果mysql重启的话,数据就不存在了)

Myisam把稳事变

如果你的数据库的存储引擎是myisam,请一定记住要定时进行碎片整理

举例解释:

create table test100(id int unsigned ,name varchar(32))engine=myisam;

insert into test100 values(1,’aaaaa’);

insert into test100 values(2,’bbbb’);

insert into test100 values(3,’ccccc’);

我们该当定义对myisam进行整理

optimize table test100;

数据库数据备份

手动办法

cmd掌握台:

在环境变量中配置mysql环境变量

mysqldump –u -账号 –密码 数据库 [表名1 表名2…] > 文件路径

案例: mysqldump -u -root root test > d:\temp.sql

比如: 把temp数据库备份到 d:\temp.bak

mysqldump -u root -proot test > f:\temp.bak

如果你希望备份是,数据库的某几张表

mysqldump -u root -proot test dept > f:\temp.dept.sql

如何利用备份文件规复我们的数据.

mysql掌握台

source d:\temp.dept.bak

自动办法

把备份数据库的指令,写入到 bat文件, 然后通过任务管理器去定时调用 bat文件.

mytask.bat 内容是:

@echo offF:\path\mysqlanzhuang\bin\mysqldump -u root -proot test dept > f:\temp.dept.sql

创建实行操持任务实行脚本。

标签:

相关文章

熔断器php技巧_3分钟简述熔断器运用方法

动机:级联故障的问题在进入熔断器模式之前,让我们来看看它到底要办理什么问题。当做事 A 考试测验与做事 B 通信时,它会分配一个线...

PHP教程 2024-12-08 阅读0 评论0