mysql数据库sql语句优化

Mysql数据库sql优化

一. 正则表达式

 

二. 查询

1. show status 查看数据的一下日志

这次登录以来操作多少次

Show status like ‘com_insert%’

Show status like ‘com_update%’

Show status like ‘com_select%’

Show status like ‘com_delete%’

2. show  status like 'innodb_rows%'

数据库历史操作以来增删改查的影响行数

3. show  status like 'connections%'

Mysql历史 链接次数,不管成功还是失败,都会记录

三. Mysql查询语句优化

1. 有关系运算符,等于符号放在最前

2. 创建索引,尽量使用区分度高的列(自增长列,不重复)

3. 使用like,

Like “%l”,使用索引

Like “%l%”,不使用索引

4. 尽量将or转换为union all

Or 不使用索引

Union all 会使用索引

Select * from user where name=’a’ union all select * from user where age=’20’

5. 字段查询使用函数不会使用索引.

不加索引:Where truncate(price)=1

加索引:where price>1 and price<2

6. 如果数字作为字符查询,不加索引,数字加上引号转为字符串,加索引

Where tel=12345678901 不加索引

Where tel=’12345678901’加索引

 

7. 字段数据加上运算符,加索引

Select * from table where age+300>500 不加索引

Select * from table where age>500     加索引

8. 使用组合索引时,必须要包括第一列

:

Alter table test add index(a,b,c)

不适用索引

Where b=1 and c=1

Where b=1

Where c=1

使用索引

Where a=1 b=1 c=1

Where a=1 b=1

Where a=1 c=1

Where a=1

9. 尽量避免使用is null 或者 is not null,使用时不加索引

10. 不等于(!=)不会使用索引

11. Order by 列,必须包含所有的相同的索引,才会使用索引

Order by 中,不能同时包含desc,asc

:

Alter table test add index(a,b)

Alter table test add index(c)

 

不使用索引:

Select * from test where a=1 and c=1

Select * from test where b=1

Select * from test order by a asc,d desc

使用索引:

Select * from test where a=1 and b=1

Select * from test where a=1 order by b asc

Select * from test where order by a desc,b desc

Select * from test where c=1 order by c asc

12. 索引不是越多越好

避免使用select *

尽量使用表连接(join)代替子查询

查询的性能方面,表连接>(not)exists>(not)in

表连接最好,exists其次,in最差.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值