mysql基础篇(四)

来源:互联网 发布:三菱plc编程方法 编辑:程序博客网 时间:2024/06/06 20:39

1、正则表达式:mysql使用的是regexp命令提供给用户的。

   正则表达式中的模式:

^:字符开始处匹配 

$:字符结尾处进行匹配。

.:匹配任意单个字符,包括换行符。

[…]:匹配出括号内的任意字符。

[^..]匹配不出括号内任意字符

A*:匹配0个或多个A

A+:匹配1个或多个A

A?:匹配1个或0A

A1|A2:匹配A1或者A2

A(m):匹配mA

A(M,):匹配m个或更多个A

A(m,n):匹配mnA

A(,n):匹配0na

..)将模式元素组成单一元素

2、巧用rand()提取随机行

Select * from sales order by rand();

      1 优化sql1、定位慢查询:通过慢查询日志找出慢的sql语句:--log—slow—queries=文件地址 long_query_time

2、  使用show processlist 查看当前mysql在进行的线程,包括线程状态、是否锁表等

3、  通过explain 查看select语句的信息。Select_type:表示select的类型:常见的有:system(简单表,不使用链接和子查询),primary(主查询)union(union中的第二个或者后面的查询) subquery(子查询中的第一个select)

Table:输出结果集的表。

Type:表示表的链接类型,性能又好到坏:system(表中仅有一行,常量表)const(表单中最多有一行匹配,例如primary或者unique index),eq_ref(连接表,也只有一条记录  ,用primary key unique index ),ref(和前面一样,但是用的是普通的key)ref_or_null(ref类似,区别在于条件中包含对null的查询)index_merge(索引合并优化)unique_subquery(in的条件中是一个主键字段的子查询)index_subquery(index_subquery类似,区别在于in的后面不是唯一索引)range(单表中的查询范围)index(对于前面的每一行,都通过查询索引来得到数据)all(对于前面每一行,都是通过全表扫描来得到的数据)

Possible_keys:表示查询时,可能使用的索引

Key:表示实际使用的索引

Key_len:索引字段的长度。

Rows:扫描行的数量

Extra:描述

4、  实例: select * from test where id=1 and name=’aa’ order by name desc

      Key应该这样建(idname)

     对于 like  这样会使用索引:“aa%

定期分析表和检查表:analyze table check table 定期优化表:optimeize table

5、  批量插入:loading the data

6、  优化数据库对象:1)通过拆分表提高表的访问效率。2)使用中间表提高统计查询速度。3)优化mysql server的参数 4)使用连接池 5)、减少数据库的访问 6)使用查询缓存 7)增加cache 8)负载均衡

原创粉丝点击