`
hy2012_campus
  • 浏览: 29202 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

mysql常用的一些优化

 
阅读更多

来源深入浅出mysql数据库开发,优化,管理维护

 

定期分析表analyze

如果已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有 VARCHAR, BLOB 或 TEXT 列的表)进行了很多更改,则应使用 OPTIMIZE TABLE。被删除的记录被保持在链接清单中,后续的 INSERT 操作会重新使用旧的记录位置。您可以使用 OPTIMIZE TABLE 来重新利用未使用的空间,并整理数据文的碎片。OPTIMIZE TABLE 只对 MyISAM, BDB 和 InnoDB 表起作用。

 

大批量插入数据:

1.  对于 Myisam 类型的表,可以通过以下方式快速的导入大量的数据。

ALTER TABLE tblname DISABLE KEYS;

loading the data

ALTER TABLE tblname ENABLE KEYS;

这两个命令用来打开或者关闭 Myisam 表非唯一索引的更新。在导入大量的数据到一

个非空的 Myisam 表时,通过设置这两个命令,可以提高导入的效率。对于导入大量

数据到一个空的 Myisam 表,默认就是先导入数据然后才创建索引的,所以不用进行

设置。

2.  而对于 Innodb 类型的表,这种方式并不能提高导入数据的效率。对于 Innodb 类型的表,我们有以下几种方式可以提高导入的效率:

a.  因为 Innodb 类型的表是按照主键的顺序保存的,所以将导入的数据按照主键的顺序排列,可以有效的提高导入数据的效率。如果 Innodb 表没有主键,那么系统会默认创建一个内部列作为主键,所以如果可以给表创建一个主键,将可以利用这个优势提高导入数据的效率。

b.  在导入数据前执行 SET UNIQUE_CHECKS=0,关闭唯一性校验,在导入结束后执行

SET UNIQUE_CHECKS=1,恢复唯一性校验,可以提高导入的效率。

c.  如果应用使用自动提交的方式,建议在导入前执行 SET AUTOCOMMIT=0,关闭自动提交,导入结束后再执行 SET AUTOCOMMIT=1,打开自动提交,也可以提高导入的效率。

 

优化insert语句:

3.  如果你同时从同一客户插入很多行,使用多个值表的 INSERT 语句。这比使用分开

INSERT 语句快(在一些情况中几倍)。

Insert into test values(1,2),(1,3),(1,4)…

4.  如果你从不同客户插入很多行,能通过使用 INSERT DELAYED 语句得到更高的速度。Delayed 的含义是让 insert 语句马上执行,其实数据都被放在内存的队列中,并没有真正写入磁盘;这比每条语句分别插入要快的多;LOW_PRIORITY 刚好相反,在所有其他用户对表的读写完后才进行插入;

5.  将索引文件和数据文件分在不同的磁盘上存放(利用建表中的选项);

6.  如果进行批量插入,可以增加 bulk_insert_buffer_size 变量值的方法来提高速度,但是,这只能myisam 表使用;

7.  当从一个文本文件装载一个表时,使用 LOAD DATA INFILE。这通常比使用很多 INSERT 语句快 20 倍;

8.  根据应用情况使用 replace 语句代替 insert;

9.  根据应用情况使用 ignore 关键字忽略重复记录。

 

优化group by语句:

默认情况下,MySQL 排序所有 GROUP BY col1,col2,....。查询的方法如同在查询中指定 ORDER BY子句,MySQL 可以毫不减速地对它进行优化,尽管仍然进行排序。如果查询包括 GROUP BY 但你想要避免排序结果的消耗,你可以指定 ORDER BY NULL禁止排序。

例如:INSERT INTO foo SELECT a, COUNT(*) FROM bar GROUP BY a ORDER BY NULL;

 

优化order by:

在某些情况中,MySQL 可以使用一个索引来满足 ORDER BY 子句,而不需要额外的排序 。where 条件和 order by 使用相同的索引,并且 order by 的顺序和索引顺序相同 ,并且 order by 的字段都是升序或者都是降序。

例如:下列 sql 可以使用索引。

SELECT * FROM t1 ORDER BY key_part1,key_part2,... ;

SELECT * FROM t1 WHERE key_part1=1 ORDER BY key_part1 DESC, key_part2 DESC;

SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 DESC;

但是以下情况不使用索引:

SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;

--order by 的字段混合 ASC 和 DESC

SELECT * FROM t1 WHERE key2=constant ORDER BY key1;

--用于查询行的关键字与 ORDER BY 中所使用的不相同

SELECT * FROM t1 ORDER BY key1, key2;

--对不同的关键字使用 ORDER BY:

分享到:
评论

相关推荐

    mysql优化sql语句的优化(索引,常用小技巧.)

    mysql的优化 数据库(表)设计合理 我们的表设计要符合3NF 3范式(规范的模式) , 有时我们需要适当的逆范式 sql语句的优化(索引,常用小技巧.) 数据的配置(缓存设大) 适当硬件配置和操作系统 (读写分离.)

    MYSQL 优化常用方法实例教程

    MYSQL 优化常用方法实例教程

    mysql数据库优化方案(值得学习)

    简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习mysql的读者。 简单描述数据库优化方案,以及数据库一些常用的操作,包括一些简单的查询语句,函数使用,合适学习...

    MySQL DBA常用优化工具

    MySQL DBA常用优化工具,非常有用的,必须要懂呀,哈哈

    十大常用MySql优化手段

    用于mysql数据库的优化,很实用的,赶快下载看看学习一下吧。

    Mysql性能优化教程

    Mysql性能优化教程,有常用的mysql优化技术,比较实用。

    mysql数据库性能优化

    mysql性能优化常用方法,以下为《构建高性能Web站点》部分内容节选,感谢您的阅读,您可以自由传播它,但请确保它的完 整性。

    高并发基础之-MySql性能优化.pdf

    掌握优化 MySQL 服务器的方法 2. 什么是优化? 合理安排资源、调整系统参数使 MySQL 运行更快、更节省资源。 优化是多方面的,包括查询优化、更新优化、服务器优化等很多方面。没有特定方 式特定的方法,总是要具体...

    MySQL技术内幕 SQL编程及优化.pdf

    2.3两个常用的优化技巧 2.4常用SQL优化 2.5常用SQL技巧 3.优化数据库对象 3.1优化表的数据类型逆规范化 3.2提高查询速度 4.锁问题 4.1MyISQM表锁 4.2InnoDB锁问题 5.优化MySQL Server 5.1MySQL体系结构...

    mysql进阶优化

    mysql语句的常用优化及进阶优化必须要掌握的几条要素。

    lwyaoshen#MySQL#MySQL常用优化方法1

    1、选取最适用的字段属性 3、使用联合(UNION)来代替手动创建的临时表 4、事务 5、锁定表 6、使用外键 7、使用索引 8、优化的查询语句

    Mysql 优化技巧总结(自己整理)

    介绍了MYSQL的优化方法,以及常用工具的使用方法。 大家都反映分数要的太高了,自己整理了MYSQL的优化。希望能得到一些积分来下载其它的学习资源,为了方便大家现在免分放送了,大家可以互相学习。

    MySQL查询优化的研究和改进

    本文档详细介绍了Mysql的查询优化性能的研究,对一些常用方法进行了优化改进~

    mysql常用函数及概念

    此文档为mysql常用函数以及概念性问题包含优化函数的使用。

    MySQL介绍及性能优化.ppt

    MySQL介绍及性能优化,MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多...

    基于mysql的sql常规优化

    sql常用优化手段

    MySQL原理及优化

    本PPT共40页,开始介绍mysql的基本架构、查询过程详解、B-Tree索引原理、及详细实例。最后附送常用优化技巧。 培训用材料

    韩顺平MYSQL优化

    韩顺平MYSQL优化文档,该文档里列举了常用MYSQL优化方法,并举出了合理和不合理的逆范式案例

    mysql常用配置参数和状态变量

    mysql常用配置参数和状态变量 一、 常用参数优化 二、 MyISAM存储引擎优化 三、 InnoDB存储引擎优化

    MySql常用面试题及答案

    MySql常用面试题的作用主要是为了考察求职者对数据库的掌握情况,包括对数据库理论知识、数据库操作、数据库设计等方面的了解。MySql面试题主要分为两大部分,第一大部分是数据库理论知识,主要考察对数据库基础概念...

Global site tag (gtag.js) - Google Analytics