MYSQL优化

SQL语句的优化和正确使用索引

 

索引的优化以及注意事项:

1.对于创建的多列(复合)索引,只要查询条件使用了最左边的列,索引一般就会被使用

2.对于使用like查询,查询如果是'%aaa' 不会使用到索引,'aaa%'会使用到索引。

3.如果条件中有 or,则要求or的所有字段都必须有索引,否则不能用到索引

4.如果列类型是字符串,那一定要在条件中将数据使用引号引起来,否则不能使用索引。

优化 group by语句:

1.默认情况,mysql对所有的 group by col1,col2进行排序,这与在查询中指定order by col1,col2类似,如果查询中包括group by 但用户想要避免排序结果的消耗,则可以使用 order null 禁止排序。

2.在有些情况下,可以使用连接来替代子查询。因为使用ioin,mysql不需要在内存中创建零时表。

如何查看我们创建的索引使用的好坏:

show status like 'Handler_read%';

大家可以注意:

handler_read_key:这个值越高越好,越搞表示使用索引查询到的次数。

handler_read_md_next:这个值越搞说明查询效率低。

管理员导入大量数据,可以这样提高速度:

如何选择存储引擎:

 

在建立表的时候存储引擎:

特别说明: memory 存储引擎的使用:

(1)数据本身在内存中,因此操作速度快

(2)当mysql重启后,数据丢失,但表结构在。

 

 

 

 

以下是mysql的所有存储引擎的相关信息:

 

  • 选择合适的数据类型

  • 对存储引擎MyISAM的表,要定时碎片整理

 举例说明:当我们在某张表或者多张表中有大量的数据时,我们delete 数据后,我们发现磁盘空间没有回收,因此我们需要定时的进行碎片整理,命令如下:

optimize table  表名;

  • my.ini的优化

 

  • 定时备份数据库

1.手动备份:

说明:1、首先进入到 mysqldump.exe的目录如下:

cd phpStudy\MySQL\bin   

说明:然后执行备份 zhaoshang 数据库的命令,备份到D盘下面:

mysqldump.exe -u root -proot zhaoshang > D:\mysql.sql.bak

2.手动恢复:

进入mysql:

mysql -u root -p root;

创建数据库:

create database zhaoshang;

然后选择数据库:

use zhaoshang;

用 source 命令进行恢复:

source d:\mysql.sql.bak;

 

3.自动备份步骤:

创建一个mysql.bat文件,里面写上备份数据库的命令,:

"D:\mysql\bin\mysqldump.exe" -u root -proot zhaoshang > D:\mysql.sql.bak

 下面我们可以系统的计划任务,来自动完成备份:

linux 用 crontab来定时计划,win下面用计划任务来定时。

具体方案:

 

posted @ 2016-10-12 15:00  岁月必然的流逝  阅读(179)  评论(0编辑  收藏  举报