梳理开发中那些常用的MySQL优化

北京中科医院骗人 http://m.39.net/pf/a_5154127.html
来源

Jian/cnblogs.   

MySQL可以使用一个索引来满足ORDERBY子句的排序,而不需要额外的排序,但是需要满足以下几个条件:

(1)WHERE条件和OREDRBY使用相同的索引:即key_part1与key_part2是复合索引,where中使用复合索引中的key_part1

SELECT*FROMuserWHEREkey_part1=1ORDERBYkey_part1DESC,key_part2DESC;

(2)而且ORDERBY顺序和索引顺序相同:

SELECT*FROMuserORDERBYkey_part1,key_part2;

(3)并且要么都是升序要么都是降序:

SELECT*FROMuserORDERBYkey_part1DESC,key_part2DESC;

但以下几种情况则不使用索引:

(1)ORDERBY中混合ASC和DESC:

SELECT*FROMuserORDERBYkey_part1DESC,key_part2ASC;

(2)查询行的关键字与ORDERBY所使用的不相同,即WHERE后的字段与ORDERBY后的字段是不一样的

SELECT*FROMuserWHEREkey2=‘xxx’ORDERBYkey1;

(3)ORDERBY对不同的关键字使用,即ORDERBY后的关键字不相同

SELECT*FROMuserORDERBYkey1,key2;5、OR的优化

当MySQL使用OR查询时,如果要利用索引的话,必须每个条件列都使独立索引,而不是复合索引(多列索引),才能保证使用到查询的时候使用到索引。

比如我们新建一张用户信息表user_info

mysqlselect*fromuser_info;+---------+--------+----------+-----------+

user_id

idcard

name

address

+---------+--------+----------+-----------+

1

Zhangsan

Kunming

2

Lisi

Beijing

3

Wangwu

Shanghai

4

Lijian

Guangzhou

+---------+--------+----------+-----------+4rowsinset

之后创建ind_name_id(user_id,name)复合索引、id_index(id_index)独立索引,idcard主键索引三个索引。

mysqlshowindexfromuser_info;+-----------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

Table

Non_unique

Key_name

Seq_in_index

Column_name

Collation

Cardinality

Sub_part

Packed

Null

Index_type

Comment

Index_


转载请注明:http://www.aierlanlan.com/rzgz/782.html

  • 上一篇文章:
  •   
  • 下一篇文章: