一些SQL的常用语句

show full COLUMNS from table_name;

返回值其中: Field: 字段名 Type: 该字段类型 Collation: 描述了如何对查询出来的数据进行比较和排序 Null:
是否允许为空, NO: 不允许,YES 允许 Key: 键,例如: 主键(PRI), 唯一键(UNI) 等 Default: 该字段默认值
Extra: 附加信息如自增主键上的(auto_increment) Privileges: 权限,有select,update等
Comment: 字段注释

explain select * from table_name where name=”zhangsan”;

  • id
    表示查询中select操作表的顺序,按顺序从大到依次执行
    select_type :
    该表示选择的类型,可选值有: SIMPLE(简单的),
  • type :
    该属性表示访问类型,有很多种访问类型。
    最常见的其中包括以下几种: ALL(全表扫描), index(索引扫描),range(范围扫描),ref (非唯一索引扫描),eq_ref(唯一索引扫描,),(const)常数引用, 访问速度依次由慢到快。其中 : range(范围)常见与 between and …, 大于 and 小于这种情况。
    提示 : 慢SQL是否走索引,走了什么索引,也就可以通过该属性查看了。
  • table :
    表示该语句查询的表
  • possible_keys :
    顾名思义,该属性给出了,该查询语句,可能走的索引,(如某些字段上索引的名字)这里提供的只是参考,而不是实际走的索引,也就导致会有possible_Keys不为null,key为空的现象。
  • key :
    显示MySQL实际使用的索引,其中就包括主键索引(PRIMARY),或者自建索引的名字。
  • key_len :
    表示索引所使用的字节数,
  • ref :
    连接匹配条件,如果走主键索引的话,该值为: const, 全表扫描的话,为null值
  • rows :
    扫描行数,也就是说,需要扫描多少行,采能获取目标行数,一般情况下会大于返回行数。通常情况下,rows越小,效率越高, 也就有大部分SQL优化,都是在减少这个值的大小。注意: 理想情况下扫描的行数与实际返回行数理论上是一致的,但这种情况及其少,如关联查询,扫描的行数就会比返回行数大大增加)
  • Extra
    这个属性非常重要,该属性中包括执行SQL时的真实情况信息,如上面所属,使用到的是”using where”,表示使用where筛选得到的值,常用的有:
    “Using temporary”: 使用临时表 “using filesort”: 使用文件排序

SHOW GLOBAL STATUS;

可以显示当前数据库的一些配置状态信息,后可以加 like ‘%some%’,只匹配某些内容,例如 :
SHOW STATUS LIKE ‘Thread_%’; 当前打开的连接的数量。
Thread_cached:被缓存的线程的个数
Thread_running:处于激活状态的线程的个数
Thread_connected:当前连接的线程的个数
Thread_created:总共被创建的线程的个数

select count(distinct(name))/count(*) from t_base_user;

其中区分度最大值为1.000,最小为0.0000,区分度的值越大,也就是数据不重复率越大,新建索引效果也越好,在主键以及唯一键上面的区分度是最高的,为1.0000,在状态、性别等字段上面的区分度值是最小的。
(这个就要看数据量了,如果只有几条数据,这时区分度还挺高的,如果数据量多,区分度基本为0.0000。也就是在这些字段上添加索引后,效果也不佳的原因。)

你可能感兴趣的:(sql)