美文网首页
MySQL数据库优化

MySQL数据库优化

作者: php小白成长ing | 来源:发表于2017-01-21 08:23 被阅读0次

首先创建几个结构复杂的表,导入10万条以上的数据进行测试。

1.SQL语句的优化

原则 1:尽量避免在列上进行运算,这样会导致索引失效。

例如原SQL语句为:

SELECT * FROM  c WHERE  YEAR (d)

> = 2011;

优化为:

SELECT * FROM c > = '2011-01-01';

原则 2:使用JOIN时,应该用小结果集驱动大结果集。同时把复杂的JOIN查询拆分成多个Query。因为JOIN多个表时,可能导致更多的锁定和堵塞。例如:

SELECT * FROM a JOIN b ON a.id = b.id

LEFT JOIN c ON c.time = a.date

……

原则 3:注意LIKE模糊查询的使用,避免%%。例如:

SELECT * FROM a WHERE name LIKE '%de%'

优化为:

SELECT * FROM a WHERE name > = 'de' AND name <  'df'

原则 4: 仅列出需要查询的字段,这对速度不会有明显影响,主要考虑节省内存。例如:

SELECT * FROM student;

优化为:

SELECT id,name,pwd FROM student;

原则 5: 使用批量插入语句节省交互。例如:

INSERT INTO aa (id,name) VALUES(1,'a');

INSERT INTO aa (id,name) VALUES(2,'b');

INSERT INTO aa (id,name) VALUES(3,'c');

优化为:

INSERT INTO aa (id,name) VALUES(1,'a'),(2,'b'),(3,'c');

原则 6: limit的基数比较大时使用between。例如:

SELECT * FROM article as article ORDER BY id LIMIT 1000000,10;

优化为:

SELECT * FROM article as  article WHERE id BETWEEN 1000000 AND 1000010 ORDER BY id;

BETWEEN限定比LIMIT快,所以在海量数据访问时,建议用BETWEEN或是WHERE替换掉LIMIT。但是BETWEEN也有缺陷,如果id中间有断行或是中间部分id不读取的情况,总读取的数量会少于预计数量!

在取比较后面的数据时,通过desc方式把数据反向查找,以减少前端数据的扫描,让LIMIT的基数越小越好!

原则 7: 不要使用rand函数获取多条随机记录。例如:

SELECT * FROM table ORDER BY rand() LIMIT 20;

改为:

先用PHP产生随机数,把这个字符串传给MySQL,MySQL里用in查询。

原则 8: 避免使用NULL。

原则 9; 不要使用count(id),而应该是count(*)。

原则 10: 不要做无谓的排序操作,而应尽可能在索引中完成排序

相关文章

  • MySQL数据库与SQL优化

    一、MySQL数据库 - SQL优化 MySQL DBMS - MySQL Database Management...

  • MySQL-性能优化-优化设计和设计原则

    MySQL-性能优化-优化设计和设计原则 MySQL性能优化目的 如何合理的设计数据库? 什么样的数据库设计才能给...

  • MySQL5:性能优化

    性能优化 优化MySQL数据库是数据库管理员和数据库开发人员的必备技能。MySQL优化,一方面是找出系统的瓶颈,提...

  • SQL审核优化建议

    SQL审核优化建议 数据库类型 MySQL:RDS MySQL、PolarDB MySQL、MariaDB、Pol...

  • 数据库存储原理特性索引优化

    说一下mysql数据库存储的原理? 事务的特性? 数据库索引 数据库怎么优化查询效率? 数据库优化方案 优化索引、...

  • MySQL优化

    概述 MySQL优化分为三部分优化: MySQL服务器和配置优化 数据库设计和结构优化 查询优化(重点) MySQ...

  • mysql性能与优化

    数据库结构优化 数据库结构设计 mysql复制

  • MySQL书目

    MySQL数据库索引设计与优化 MySQL技术内幕 MySQL排错指南 高性能MySQL MySQL DBA修炼之道

  • zabbix4.0 之mysql优化(Zabbix分区表)

    zabbix最大的瓶颈不在zabbix服务,而是mysql数据库的压力上,优化mysql其实就是优化zabbix的...

  • 性能优化系列文章目录

    1.概览 性能优化概览 2.MySQL数据库优化 如何做好MySQL数据库优化-第一部分 快速生成百万级测试数据 ...

网友评论

      本文标题:MySQL数据库优化

      本文链接:https://www.haomeiwen.com/subject/hebgbttx.html