mysql查询语句优化

1. 避免用count(), rand()函数

数据多后,速度极慢

2. 只需获取一条记录,使用limit 1

limit偏移量pyl变大,速度会变慢,应该换成下列写法

select userid,unam from userlist where userid > pyl limit 10;

3.避免使用select *

4.使用连接(join)代替子查询

5.建立索引

6.避免使用模糊查询%,负向查询!= , not exist , not in

7. 以下操作都会导致全表扫描,应该避免

避免在where子句中使用!= 或 < >操作符

避免在where子句中使用or来连接条件

慎用in \ not in, 多个连续数值应该用between x and y

8. 避免数据库引擎放弃使用索引

不在索引列进行数学运算

9. 索引不是越多越好,索引提高了select速度,同时牺牲了insert和update速度,因为有索引的时候,insert数据后会导致重建索引,耗费一定资源,单表索引数量最好不超过6个。

10.用int保存ip地址,而非char(15)

用 inet_aton()  inet_ntoa()  进行字符\整型互转

11.可能值有限用enum表示,比如

‘sex’ enum(‘F’,’M’) comment ‘性别’

state enum(’0′,’1′,’2′,’3′)  comment ‘状态’

12.不在数据库存图片、数据块

13.多条语句批量执行