作为程序员一定要保持良好的睡眠,才能好编程

mysql的索引与排序

发布时间:2016-11-07


在索引的查询上,本身就是有顺序的。如何利用索引进行排序?


索引可以提高查询效率、排序效率、分组效率。


查询、where 后面尽可能的使用 索引进行查询

order by

group by

都是依照上面的来做即可。


select id from web_htorder where id>40 order by id desc limit 10;


sql> explain select id from web_htorder where id>40 order by id desc limit 10 \G;
************************* 1. row **********
         id: 1
select_type: SIMPLE
      table: web_htorder
       type: range
ssible_keys: PRIMARY
        key: PRIMARY
    key_len: 4
        ref: NULL
       rows: 573
      Extra: Using where; Using index
row in set (0.00 sec)

ROR:
 query specified



表的优化与列的选择


整型>date,time>char,varchar>blob


字符串够用就好,不要慷慨

比如说:varchar(30)  与  varchar(300)
  那么它的运行速度小的比较快。


如何选择字段的类型?


1、 如果可以选择  整型,就不要选择字符串, 整型 速度快。

2、varchar与char 哪个快? char快

3、blog 无法使用索引表,需要在磁盘建立缓存文件,不推荐使用。

4、不要使用null  ,可以的话使用0 代替。null在磁盘上的字节占用的比较大。



如果说数据中插入了 null 值,那么如何查询啊?


select * from web_htorder where company is null  要使用 is null 才可以查询到。


enum在表中是使用整型进行存储的。


create table web_stu(

sex enum("male","female") not null default 'male'

);


e1.jpg



e2.jpg


由此可见,enum是存储的是num 整型。



在选择使用什么类型的时候,需要优选选择的    整型----enum ------char/varchar----blog 这样的一个顺序。


 索引策略怎么优化?


假设一个表有一个联合索引,c1,c2,c3,c4那么下面哪一个只能使用索引c1,c2,c3部分?



如果只是在where上搜索加上的索引,这个不一定正确,一看就是刚出道小生。