COMMENT
从句)SELECT
, UPDATE
, DELETE
语句中的WHERE从句中的常出现的列ORDER BY
, GROUP BY
, DISTINCT
中的字段primary key(id),index(id),unique index(id)
这三个就重复建立id的索引了index(a,b,c),index(a,b),index(a)
对于a来说就重复建立了。VARCHAR(N)
的N代表是字符数,不是字节数,使用UTF-8存储汉字 VARCHAR(255)=765
个字节TEXT
、 BLOB
数据类型ENUM
数据类型ENUM
值会导致表结构的修改ENUM
的 ORDER BY
需要额外操作,效率低NOT NULL
NULL
列需要额外空间,占用更多空间TIMESTAMP
或 DATETIME
类型存储时间。不要用字符串存储日期类型(无法利用内置日期函数而且占用更多空间)DECIMAL
类型BIGINT
更大的整数数据a LIKE'%123%'
LEFT JOIN
或 NOT EXISTS
来优 NOT IN
操作(可能导致索引失效)SELECT*
,需要用 SELECT<字段列表>
查询*
返回不需要的字段INSERT INTO t VALUES('a','b','c')
应该带上 INSERT INTO t(c1,c2,c3)VALUES('a','b','c')
JOIN
操作JOIN
关联太多的表JOIN
一个表会多占用一部分内存(joinbuffersize)IN
代替 OR
IN
的值不超过500个IN
的操作可以有效的利用索引ORDER BY rand()
进行随机排序WHERE
从句中队列进行函数转换和计算UNION ALL
而不是 UNION
UNION
会把所有数据放到临时表中后再进行去重操作UNION ALL
则不会做去重操作