MySQL优化


FILEb26ebcde-7501-4282-bd8c-fb0c36bf43be.jpg.jpg

(1)、select

1)、避免 SELECT *。

(2)、from

(3)、join

(4)、on

2)在Join表的时候使用相同类型的关联字段,并将其索引。字符串类型,还需要有相同的字符集才行。

(5)、where

3)、为搜索字段 建索引。有几种情况是不走索引的,比如:

1使用OR时,有一个列没有索引,那么其它列的索引将不起作用

2对于多列索引,只有在它的第一个列被where子句引用时,优化器才会选择使用该索引。

3like查询是%开头

4索引列有隐式转,如 列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引。

5、索引列有函数处理。

6对列进行计算,如:aa+10=20。

7、某些情况使用反向操作,如:<> 、not in 、not exist、!= 。

(6)、group by

(7)、having

(8)、order by

4)、不要使用ORDER BY RAND()。想打乱返回的数据行?随机挑一个数据?

(9)、limit

5)、当只要一行数据时使用 LIMIT 1。数据库引擎会在找到一条数据后停止搜索。

6)、使用无缓冲的查询。mysql_unbuffered_query()发送一个SQL语句到MySQL,而并不像mysql_query()一样去自动fethch和缓存结果。这会相当节约很多可观的内存,尤其是那些会产生大量结果的查询语句,并且,你不需要等到所有的结果都返回,只需要第一行数据返回的时候,你就可以开始马上开始工作于查询结果了。

7)、尽量避免使用不开启查询缓存的函数

查询缓存是MySQL的数据库引擎处理的,当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中。某些查询语句会让 MySQL不使用缓存。

// 查询缓存不开启

$r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()");

// 开启查询缓存

$today = date("Y-m-d");

$r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'");

(10)、CREATE TABLE `t_merchant_user` (

`user_id` varchar(20) NOT NULL COMMENT '用户ID',

8)、越小的列会越快如果一个表只会有几列罢了(比如说字典表,配置表),那么,我们就没有理由使用INT来做主键,使用MEDIUMINT,

SMALLINT或是更小的TINYINT会更经济一些。如果你不需要记录时间,使用DATE要比DATETIME好得多。

9)、固定长度的表会更快。因为固定的长度很容易计算下一个数据的偏移量,读取很快。而如果字段不是定长的,每一次要找下一条的话,需要程序找到主键。固定长度的表也更容易被缓存和重建。不过固定长度的字段会浪费一些空间。

10)、尽可能的使用NOT NULL。NULL需要额外的空间,并且在进行比较时,程序会很复杂。

11)、垂直分割把数据库中的表按列变成几张表,可以降低表的复杂度和字段的数目。不过,需保证不会经常性地去Join它们,不然的话,这样的性能会比不分割时还要差。

12)、IP地址存成UNSIGNED INT

13)、使用ENUM不是VARCHAR。其保存的是TINYINT,但其外表上显示为字符串。

(11)、PRIMARY KEY (`user_id`))

14)、永远为每张表设置一个主键最好的是一个INT型的(推荐使用UNSIGNED),并设置上自动增加的AUTO_INCREMENT标志。用VARCHAR类型来当主键会使用得性能下降。

(12)、ENGINE=InnoDB

15)、选择正确的存储引擎MyISAM适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成。另外,MyISAM对于 SELECT COUNT(*) 这类的计算是超快无比的。


(13)、DELETE或INSERT

16)、DELETE或INSERT很多条数据时,使用limit这两个操作是会锁表。













原文地址:http://qianxunclub.com/mysqlyou-hua/
本文由 千寻啊千寻创作。可自由转载、引用,但需署名作者且注明文章出处。

上一篇 :   终于知道了酒干倘卖无暗示什么意思了!

下一篇 :   Redis与Hazelcast,在重负荷下的表现孰优孰劣?

热门评论