本文共 2437 字,大约阅读时间需要 8 分钟。
创建数据库表 tb_user_2,结构如下:
CREATE TABLE `tb_user_2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(45) NOT NULL, `password` varchar(96) NOT NULL, `name` varchar(45) NOT NULL, `birthday` datetime DEFAULT NULL, `sex` char(1) DEFAULT NULL, `email` varchar(45) DEFAULT NULL, `phone` varchar(45) DEFAULT NULL, `qq` varchar(32) DEFAULT NULL, `status` varchar(32) NOT NULL COMMENT '用户状态', `create_time` datetime NOT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_user_username` (`username`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
使用 LOAD DATA INFILE 命令导入数据,建议:
SET UNIQUE_CHECKS=0,导入结束后恢复为 1。SET AUTOCOMMIT=0,导入完成后恢复为 1。# 有序插入insert into tb_user_2 values(1,'Tom'),(2,'Cat'),(3,'Jerry');# 无序插入insert into tb_user_2 values(3,'Luci'),(1,'Tom'),(2,'Cat');
START TRANSACTION 和 COMMIT 控制事务,提升效率。# 原始方式insert into tb_test values(1,'Tom');insert into tb_test values(2,'Cat');insert into tb_test values(3,'Jerry');# 优化后insert into tb_test values(1,'Tom'),(2,'Cat'),(3,'Jerry');
创建表 emp 和索引 idx_emp_age_salary:
CREATE INDEX idx_emp_age_salary ON emp(age, salary);
ORDER BY 和 WHERE 中的字段一致,并按升序或降序排序。sort_buffer_size 和 max_length_for_sort_data。GROUP BY 中禁用排序,执行 ORDER BY NULL。GROUP BY 和 WHERE 中的字段有优化索引。# 需要 Filesortselect age, count(*) from emp group by age;# 禁用 Filesortselect age, count(*) from emp group by age order by null;
# 子查询select * from t_user where id in (select user_id from user_role);# 联合查询select * from t_user u join user_role ur on u.id = ur.user_id;
OR 条件字段有优化索引。# 不优化select * from emp where id=1 or id=10;# 优化select * from emp where id=1 union select * from emp where id=10;
# 优化分页select * from tb_item where id > 2000000 limit 10;
# 使用特定索引explain select * from tb_seller use index(idx_seller_name_sta_addr) where name='小米科技';
通过以上优化方法,可以显著提升数据库性能,适用于大批量数据处理、复杂查询优化等场景。
转载地址:http://lhdfk.baihongyu.com/