mysql高级笔记

linux的mysql的数据库存储文件在/var/lib/mysql路径下
修改字符集编码时重启mysql后原来的数据库的编码还是乱码,需要重新创建新的库字符编码才会修改

mysql的sql语句手写与机读
手写:select>from>join on>where>group by>having>order by>limit
机读:from>join on>where>group by>having>select>distinct>order by>limit

索引可以简单理解为排好序的快速查找数据结构。

explain的表头:id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra

id:id相同时,表的执行顺序是由上到下的,即表头table里的表的执行顺序是由上到下的。如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行,即表头的table里的表的执行顺序是根据前面的id而定,id越大,执行顺序越前。id相同又不同的情况下,比如1,1, 2这种情况下,永远都是id大的先执行,即表头的table里的表的执行顺序是根据前面的id而定,id越大,执行顺序越前,DERIVED是衍生的意思,后面跟的数字即是执行完哪个id衍生出来的,执行完id大的后,id相同的顺序执行。

select_type:主要作用是告诉程序员mysql所理解的是什么查询,比如子查询之类的
select_type:有六个值:
SIMPLE:简单的select查询,查询中不包含子查询或者UNION
PRIMARY:查询中若包含任何复杂的子部分,则外层查询被标记为PRIMARY,PRIMARY最后被加载
SUBQUERY:在select或WHERE列表中包含子查询
DERIVED:在from列表中包含的子查询被标记为DERIVED(衍生),mysql会递归查询这些子查询,把结果放在临时表里
UNION:若第二个SELECT出现在UNION之后,则被标记为UNION;若UNION被包含在from子句的子查询中,外层SELECT将被标记为DERIVED
UNION RESULT:从UNION表获取结果的select

table:显示这一行的数据是哪一张表的。

type:访问类型排序,显示查询使用了何种类型,最好到最差依次是system>const>eq_ref>ref>range>index>All,一般来说,得保证查询至少达到range级别,最好能达到ref

possible_keys:显示可能应用在这张表中的索引,一个或多个,查询涉及到的字段上若存在索引,则该索引会被列出,但不一定会查询使用

key:实际使用的索引,如果为null,则没有使用索引,查询中若使用了覆盖索引,则该索引仅出现在key列表中

key_len:表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度,在不损失精确度的情况下,长度越短越好,ken_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的。

ref:显示索引的哪一列被使用了,如果可能的话,是一个常数,哪些列或常量 被用于查找索引列上的值。

rows:根据表统计信息及索引选用情况,大致估算出找到所需要的记录所需要读取的行数

mysql当前会话加读锁会导致其他会话写阻塞,当前会话加读锁不能访问其他表,其他会话可以访问被加锁的表,因为读锁是共享的,当前会话加了读锁不能写该表

mysql当前会话加写锁,自己可以读,可以写,其他会话不能读,不能写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值