1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.2000条以内的记录不建议做索引 3.最佳左前缀原则,联合索引的B+Tree是按照第一个关键字进行索引排列的。 4.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描 5.SQL语句中IN包含的值不应过多 6.SELECT语句务必指明字段名称 7.将可能失效的SQL语句放在where的后面 8.不建议使用%前缀模糊查...
Web项目中,当Java或者Go等语言速度提升到瓶颈的时候,我们需要关心MySQL的优化可以优化的方面有很多:设计表、负载均衡、读写分离、SQL语句优化等 (1)IP地址设计例如我们需要存储IP地址:192.168.1.1第一反应是选用VARCHAR(15);但是更好的方式是INT UNSIGNED(占用四个字节)因为:IP地址可以很容易地转换为无符号整数仔细观察IP地址,四部分都是0-255的数字,1个字节(8位)恰好可以表示0-255的整数而MySQL有函数:inet_ato...
介绍使用pt-query-digest搜集慢查询日志。将数据存储在两张表中:global_query_review 和 global_query_review_history。然后使用anemometer将pt-query-digest 搜集的数据以web形式展现出来,方便查询分析。1、准备条件:a.LNMP平台b.MySQL开启慢查询 slow_query_log=on #开启数据库的慢日志 long_query_time=0.1 #时间超过0.1s的SQL记录日志中 log-slow-queries=/usr/local/mysql/data/mysql_slow.log #慢日志存放路...
比较全面的MySQL优化参考(上篇)
发表回复
本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨在帮助那些没有专职MySQL DBA的企业做好基本的优化工作,至于具体的SQL优化,大部分通过加适当的索引即可达到效果,更复杂的就需要具体分析了,可以参考本站的一些优化案例或者联系我,下方有我的联系方式。这是上篇。1、硬件层相关优化1.1、CPU相关在服务器的BIOS设置中,可调整下面的几个配置,目的是发挥CPU最大性能,或者...
mysql优化:修改mysql的root账号的密码:先停止mysql服务: service mysqld stop使用--skip-grant-tables忽略密码启动:mysqld_safe --skip-grant-tables &进入mysql修改密码:use mysqlupdate user set password=password(‘mysql‘) where user=‘root‘;flush privileges;查看表占用空间情况: select table_name, (data_length+index_length)/1024/1024 as total_mb, table_rows from information_schema.tables where table_s...
1、数据库表设计的合理性1)三范式 一范式:原子性,属性不可分; 二范式:无部分依赖,例:(学号, 课程名称) → (姓名, 年龄, 成绩, 学分),存在部分依赖 (学号) → (姓名, 年龄)拆分;(学号, 姓名, 年龄),(课程名称, 学分), (学号, 课程名称, 成绩), 三范式:无传递依赖,例:(学号)→(姓名,年龄,性别,系别,系办地址、系办电话)传递依赖:(学号)→ (系别)→(系办地点,系办电话)再拆分。。。 2)逆范式: 相片表(...
内容较多,可先收藏,目录如下:一、什么是主从复制二、主从复制的作用(重点)三、主从复制的原理(重中之重)四、三步轻松构建主从五、必问面试题干货分析(最最重要的点)一、什么是主从复制(技术文):主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。二、主从复制的作用(好处,或者说为什么要做主从)重点!:1、做数据的热备,作为后备数据库,主数据库服务器故...
在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已。 一、优化的哲学注:优化有风险,涉足需谨慎1、优化可能带来的问题1、优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统;2、优化手段本来就有很大的风险,只不过你没能力意识到和预见到;3、任何的技术可以解决一个问题,但必然存在带来一个问题的风险;4、...
二、原则总结
原则1、仅列出需要查询的字段,这对速度不会明显的影响,主要是考虑节省应用程序服务器的内存。
原来语句: select * from admin
优化为: select admin_id,admin_name,admin_password from admin
原则2、尽量避免在列上做运算,这样导致索引失效。
原语句: select * from admin where year(admin_time)>2014
优化为: select * from admin where admin_time> ‘2014-01-01′
原则3、使用JOIN 时候,应该用小的结果驱...
所谓知己知彼,百战不殆。既然要优化数据库,我们就首先要知道,优化的是什么,或者说:什么因素影响了数据库的性能。影响数据库因素主要因素总结如下:sql查询速度网卡流量服务器硬件磁盘IO以上因素并不是时时刻刻都会影响我们的数据库性能,而就像木桶效应一样:如果其中一个因素严重影响性能,那么整个数据库性能就会严重受阻。另外,这些影响因素都是相对的,例如:当数据量并没有达到百万千万这样的级别,那么sql查询速度也许...
1.从服务器硬件考虑2.通过对缓存的设置3.对索引进行优化4.对sql语句进行优化5.通过对配置文件来优化首先要知道mysql的运行状况show status;show status like ‘com_select%‘show status like ‘com_insert%‘show status like ‘com_update%‘可以判断写多或读多,从而根据实际情况来更改存储引擎。查询使用时间 单位sshow global STATUS like ‘%uptime%‘查看当前连接数show GLOBAL status like ‘%connections%‘show processl...
原文:http://www.cnblogs.com/meibao/p/6237425.html
表结构如下,文章只有690篇。文章表article(id,title,content)标签表tag(tid,tag_name)标签文章中间表article_tag(id,tag_id,article_id) 其中有个标签的tid是135,查询标签tid是135的文章列表。690篇文章,用以下的语句查询,奇慢:select id,title from article where id in(
select article_id from article_tag where tag_id=135
)其中这条速度很快:select article_id from article_tag where tag_id=135查询结果是五篇文章,...
基本上通过索引来解决 。 通常索引键在where , group by , order by 相关的列 一个表只能用一个索引(查询的时候)所以当要执行复杂查询时最好使用联合索引就是 index (a,b,c,d,....)where 需要注意的事,索引是左到右使用的 , 如果是 index(a,b,c) 那么可以1. where a = x and b = y and c = z 2. where a = x order by b,c 3 where a = x group by a,b,cgroup by 需要注意的事 :如果是多表查询,group by 索引只能group 最后的那个...
一. 表的优化
1. 选择合适的数据引擎
MyISAM:适用于大量的读操作的表
InnoDB:适用于大量的写读作的表2.选择合适的列类型
使用 SELECT * FROM TB_TEST PROCEDURE
ANALYSE()可以对这个表的每一个字段进行分析,给出优化列类型建议3.对于不保存NULL值的列使用NOT
NULL,这对你想索引的列尤其重要4.建立合适的索引5.使用定长字段,速度比变长要快 二. 充分利用索引
1.尽量比较数据类型相同的数据列2.尽可能地让索引列在比较表达式中独立...