索引创建、删除
给student表的‘name’列添加一个索引名为‘idx_name’的索引:ALTER TABLE student ADD INDEX idx_name(name);
删除‘idx_name’的索引:DROP INDEX idx_nameON student; ALTER TABLE student DROP INDEX idx_name;
修改引擎
mysql版本支持的引擎:show ENGINES;
数据库school中student标用的存储引擎:show table status from school where name='student';
#ALTER TABLE student ENGINE=MyISAM,使用MyISAM存储引擎后插入1000万条数据花费的时间431.915s;MyISAM引擎在插入数据的时候没有事物的,插入数据极快。
InnoDB引擎在插入、修改、删除数据的时候有事物提交的步骤,速度较慢。
MyISAM引擎 、InnoDB引擎 比较
Myisam内置了一个计数器,所以在使用 select count(*) from table 的时候,直接可以从计数器中取出数据,速度很快;而innodb必须全表扫描一次方能得到总的数量。
MySQL查询优化
sql命令行运行sql文件:mysql> source f:Myfile/sakila-db/sakila-schema.sql;
检查mysql是否开启慢查询日志:mysql> show variables like 'slow_query_log';
查询所有的日志变量:mysql> show variables like 'slow_query_log';
检查mysql是否开启没用上索引查询日志“,设置打开索引查询日志:mysql> set global log_queries_not_using_indexes=on;
长查询时间设置:mysql> show variables like 'long_query_time'; 默认是10;
便于测试,故设置为0:mysql> set global long_query_time=0;
打开慢查询日志为on:mysql> set global slow_query_log=on;
分析sql慢查询日志:pt-query-digest工具
mysql explain分析查询语句: