以下是我目前对mysql数据库的优化总结,新人见解,有不足之处请见谅,谢谢。
1.不要给数据库留null值,尽可能使用not null;避免了在查询时对null值得比较,加快查询速度; 其次,null值会占用空间。
2.对查询的优化,要避免全扫描,可在where和Oder by涉及的列上建立索引。
3.尽量避免where字句中使用!=或<>的操作,否则引擎将放弃使用索引进行全表扫描;
4.尽量避免where中使用or,in,not in,原因同上,in可用exists代替:select num from a where exists(select 1 from b where num=a.num)
5.使用连接(JOIN)来代替子查询
SELECT * FROM customerinfo
LEFT JOIN salesinfo ON customerinfo.CustomerID=salesinfo.CustomerID
WHERE salesinfo.CustomerID ISNULL
6.使用union来代替手动创建的临时表;
SELECT Name,Phone FROM client UNION
SELECT Name,BirthDate FROM author UNION
SELECT Name,Supplier FROM product
7.使用事务。防止因意外状况而造成的数据不完整,如果两条sql语句中的一条执行失败,数据会回复到开始之前的状态。
BEGIN; INSERT INTO salesinfo SET CustomerID=14; UPDATE inventory SET Quantity=11 WHERE item=‘book’; COMMIT;