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下面用计划任务来定时。
具体方案: