*利用MYSQL数据缓存提高效率,注意事项:

  1.应用环境:不经常改变的表及对此表相同的查询

  2.不适用于服务器端编写的语句

  3.根据数据使用频率,合理分解表

  4.合理使用默认条件,提高命中率

  5.统一SQL语句编写规范,因为MYSQL解析时区分大小写

  6.增加服务器缓存空间

*为查询缓存,优化查询语句:

// 查询缓存不开启
$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'");

用变量代替MYSQL函数,开启缓存

*EXPLAIN你的SQL语句,分析查询效率

*只要一行数据时,使用LIMIT 1

*为不经常添加修改,又经常查询的字段,添加索引

  很蛋疼的一件事,自行衡量是否添加

*JOIN表的时候,使用相同类型的列,STRING类型,两表字符集要一致

*不使用 ORDER BY RAND(),性能会指数级下降

// 千万不要这样做:
$r = mysql_query("SELECT username FROM user ORDER BY RAND() LIMIT 1"); // 这要会更好:
$r = mysql_query("SELECT count(*) FROM user");
$d = mysql_fetch_row($r);
$rand = mt_rand(0,$d[0] - 1); $r = mysql_query("SELECT username FROM user LIMIT $rand, 1");

*避免SELECT *,应该用什么取什么,会导致速度变慢及网络负载加重

*使用VARCHAR类型当主键会降低性能,永远为每张表设置ID,最好为INT型(推荐UNSIGNED),并自增

*为有限取值的列使用ENUM

*选择性使用PROCEDURE ANALYSE()建议

*尽可能使用NOT NULL

*把IP地址存成UNSIGNED INT

*固定长度的表会更快

*垂直分割,注意分出去的表不经常被JOIN,否则性能会级数下降

*拆分大的DELETE 或 INSERT

*越小的列会越快,比如仅几条数据的主键可采用SMALLINT、TINYINT

*选择正确的存储引擎

关于MYSQL优化(持续更新)的更多相关文章

  1. MySQL 优化--持续整理

    一.innodb体系结构优化: 1.IO优化 IO能力不足时 innodb_io_capacity 应该降低 innodb_max_dirty_pages_pct 应该降低 innodb_max_di ...

  2. 几种常用排序算法代码实现和基本优化(持续更新ing..)

    插入排序(InsertSort): 插入排序的基本思想:元素逐个遍历,在每次遍历的循环中,都要跟之前的元素做比较并“交换”元素,直到放在“合适的位置上”. 插入排序的特点:时间复杂度是随着待排数组的有 ...

  3. mysql 应用 持续更新2 转载

    作者:彼岸Queen旅行链接:https://www.zhihu.com/question/27334963/answer/266624031来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...

  4. mysql 应用 持续更新

    1.安装方法 贴出,my.ini # MySQL Server Instance Configuration File # -------------------------------------- ...

  5. 常用MySQL语句(持续更新)

    1. 客户端登录 在终端输入 mysql -u[用户名] -p[密码] 2. 数据库级别操作 // 创建数据库 create database [db name]; // 查看数据库列表 show d ...

  6. nginx(tengine)的一些小优化(持续更新)

    1.nginx日志切割脚本 需求来源:nginx本身并没有日志切割的功能,由访问产生的大日志很难进行分析. 实现目的:每天对nginx日志进行切割,并备份至指定文件夹. 简要指令: mv /usr/l ...

  7. mysql查询优化(持续更新中)

    1.        索引不会包含有NULL值的列 (1)   应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描 (2)   数据库设计时不要让字段的默认值 ...

  8. Mysql注入小tips --持续更新中

    学习Web安全好几年了,接触最多的是Sql注入,一直最不熟悉的也是Sql注入.OWASP中,Sql注入危害绝对是Top1.花了一点时间研究了下Mysql类型的注入. 文章中的tips将会持续更新,先说 ...

  9. mysql 高性能日记之索引(持续更新)

    本文仅限于自己读写的笔记,需要具有一定 mysql(inodb,myisam 引擎)基础的高端玩家,不感兴趣的玩家们就不用在意了 Inodb 引擎 1,每个新建索引,都需要考虑清楚看是否是必须的,很多 ...

随机推荐

  1. Nunit Test 项目模块

    下载地址:http://visualstudiogallery.msdn.microsoft.com/97bd5118-0c29-41b4-9477-d34192c183c3?SRC=VSIDE

  2. [RxJS] Filtering operator: filter

    This lesson introduces filter: an operator that allows us to let only certain events pass, while ign ...

  3. WebRTC clientICE 延迟问题

    本文原创自 http://blog.csdn.net/voipmaker  转载注明出处. 近期在优化WebRTCclient呼叫延迟问题.原因是ICE协议栈在收集地址到探測协商过程花费非常长时间.这 ...

  4. JAVA大集合数据分批次进行切割处理

    今天遇到一个大集合里面的数据删除问题, 因为是一个大集合,如果同时传递到数据库,那么就会造成数据库压力 所以分批次的进行批量操作 其实 也可以采用多线程来处理或者多批次加多线程来处理都是可以的 下面的 ...

  5. IOS-NSDateFormatter使用介绍

    IOS-NSDateFormatter使用介绍 NSDateFormatter的使用: NSDate *nowDate = [[NSDate alloc] init]; NSDateFormatter ...

  6. [转] Spring Boot and React hot loader

    When I develop web applications, I love using React. I'm also a Spring and groovy addict. Those two ...

  7. css考核点整理(一)-浮动的理解和清除浮动的几种方式

    浮动的理解和清除浮动的几种方式 clear语法:clear : none | left | right | both 取值:none : 默认值.允许两边都可以有浮动对象left : 不允许左边有浮动 ...

  8. 最近的两个小项目,2:Python webapp的docker镜像

    时间过得真快,一眨眼一个多月没更新了,但这一个月我可没偷懒啊,真的是忙.粘上两篇ReadMe勉强凑合一下,保持博客更新是好习惯. 基于Flask框架,uwsgi起服务,supervisor做管理,应该 ...

  9. linux reboot命令

    命令简介: 该命令用来重启Linux系统.相当于Windows系统中的restart命令. 命令语法: /sbin/reboot [-n] [-w] [-d] [-f] [-i] 或 reboot [ ...

  10. LDAP7卸载

    3 Uninstalling Directory Server Enterprise Edition This chapter provides instructions for uninstalli ...