MySQL性能优化
来源:互联网 发布:千兆网络交换机价格 编辑:程序博客网 时间:2024/05/22 04:25
一 Mysql Sql语句技巧与优化
1.Mysql Sql语句技巧
1).正则表达式的使用
正则表达式使用很广泛,很多编程语言都会使用到,MySQL也是有很好的支持的。例如使用LIKE进行模糊查询会很方便,让语句简短。
可以通过以下命令查看MySQL正则表达式的语法:
mysql> ? regexp
比如:
mysql> SELECT "java is OK" REGEXP "java*";mysql> SELECT name,email FROM t1 WHERE email REGEXP "@163[.,]com$";
建议看JavaScript、Linux Shell编程中的正则表达式使用。
2).巧用RAND()提取随机行
MySQL数据库中的RAND()函数是获取一个0~1之间的数,利用这个函数和ORDER BY一起能够很好的把数据随机排序,可能有时会对记录进行抽样,例如:
mysql> SELECT * FROM stu ORDER BY RAND() LIMIT 3;
3).利用GROUP BY的WITH ROLLUP子句统计
使用GROUP BY的WITH ROLLUP子句可以检索出更多的分组聚合信息,效果会更好,例如:
mysql> SELECT cname,pname COUNT(pname) AS total FROM demo BROUP BY cname,pname WITH ROLLUP;
注意:WITH ROLLUP不能和ORDER BY同时使用!!!缺点是有时候不好把控。
4).用BIT GROUP FUNCTIONS做统计
在使用GROUP BY语句的同时可以使用BIT_AND、BIT_OR函数来完成统计工作,这两个函数主要是做数值之间的逻辑位运算。例如,对t_order表的id分组时对kind做位运算:
mysql> SELECT id,BIT_AND(kind) FROM t_order GROUP BY id;mysql> SELECT id,BIT_OR(kind) FROM t_order GROUP BY id;
5).使用外键需要注意的问题
InnoDB类型的表支持外键,MyISAM类型的表虽然创建外键可以成功,但是不起作用,主要原因是MyISAM数据引擎不支持外键。
6).mysql中help的使用
?命令用来进行帮助查询。
二 Mysql Sql语句优化
1).优化Sql语句优化的一般步骤
a) 通过SHOW status 命令了解各种SQL语句的执行频率,格式:
SHOW [session|global] status;
其中:session(默认)表示当前连接会话;global表示数据库启动至今
例如:
mysql> SHOW status; -- 查看全部statusmysql> SHOW status LIKE "Innodb_rows%"; -- InnoDB引擎CRUD相关mysql> SHOW global status; -- 数据库启动至今的statusmysql> SHOW global status LIKE "Com_"; -- 数据库启动至今的CURD统计数据mysql> SHOW status LIKE "Com_"; -- CRUD次数统计相关mysql> SHOW status LIKE "Connect%"; -- 连接MySQL的数量mysql> SHOW status LIKE "Uptime%"; -- MySQL服务器已经工作的秒数mysql> SHOW status LIKE "%slow_%"; -- 慢查询相关
b) 定位执行效率较低的SQL语句
mysql> EXPLAIN SELECT * FROM stu WHERE score > 80\G;mysql> DESC SELECT * FROM stu WHERE score >= 80\G;
结果中重点查看以下数值:
- rows: 影响行数
- type: 连接类型
(性能:system>const>eq_ref>ref>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>all) - select_type: 查询类型
- possible_keys:可能使用到的索引
- key: 是否使用到索引
- key_len: 使用到的索引列中某个值最大长度
- Extra: SQL执行情况说明和描述
c) 根据慢查询日志,分析执行效率低的SQL语句,对该创建索引的列创建索引、复杂查询创建视图等。
三 Mysql索引优化
1. 索引优化
2. 表检查与表优化
1) check表检查
2) optimize表优化
3. 常用sql的优化
1) 大批量导入数据
2) insert优化
3) group by优化
4) 嵌套查询优化
四 数据库优化与服务器优化
1. 数据库优化
1) 优化表的类型
2) 分库分表
3) 分区技术
4) 使用中间表提高统计查询速度
2. mysql服务器优化
1) myisam表锁
2) 四种字符集问题
3) binary log日志问题
4) slow log慢查询日志
5) socket丢失问题
6) root密码破解
- 性能优化之--MySql优化
- Mysql性能优化-查询优化
- 性能优化之MySQL优化
- MySQL性能优化
- MySQL性能优化
- MySQL 性能优化
- mysql 性能优化
- MySQL 性能优化
- MySQL性能优化
- MySQL 性能优化
- MySQL性能优化TIPS
- MySQL性能优化
- MySQL 性能优化
- MySQL性能优化
- MySQL性能优化
- MySQL 性能优化
- mysql sort 性能优化
- MySQL 性能优化
- 基本IO操作(一)
- 大搬家
- Java语言基础(六)-数组
- 第二十九、Java之值传递
- error c3872: “0x3000”: 此字符不允许在标识符中使用
- MySQL性能优化
- Redis List 命令列表
- hihocoder#1482-出勤记录II
- 阿里运营、百度的技术、腾讯的产品
- POJ 1065 贪心
- hdoj1016 Prime Ring Problem dfs+回溯
- 102道java算法
- PAT1060【大模拟啊】
- 产生死锁的必要条件和解决方法