`
lxneng
  • 浏览: 188482 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

MySQL 优化的一些小窍门

阅读更多
   * 针对Innodb表,尽量不执行SELECT COUNT(*)语句,因为Innodb表没有类似MyISAM那样的内部计数器来记录表记录总量,执行这个操作将会全表扫描,速度很慢.
   * 尽量使用MyISAM表,除非必须使用其他类型,因为MyISAM类型的总体读写效率是相当高的,缺点是表级锁,而不是行/页级锁.
   * 善用EXPLAIN来帮助你分析查询优化情况
   * 如果需要对一个较大的且并发读写较多的数据表做GROUP BY等统计操作,建议使用摘要表来存储统计信息,定期更新统计表,这可能获得很大的性能改善.
   * 查询时如果有ORDER BY分句的话,注意让它的字段顺序和索引字段顺序对应,这样能加快排序速度
   * 如果有一个多字段索引,则查询时,必须按照索引顺序来使用,否则该索引不会用到.例如:
     索引`idx_`(col1, col2, col3),那么查询SELECT .... FROM ... WHERE col1=1 AND col2=2;使用索引,而查询... WHERE col2=2 AND col3=3;或... WHERE col1=1 AND col3=3;则不使用索引.
   * WHERE中的条件如果有恒量类型的(如 `field` = 1),就尽量放在前面,这样能更快的执行过滤.
   * 2 个表连接时,连接字段的类型最好一致(包括字段长度),这样的话索引速度快多了.
   * 大部分情况下,字符类型的字段索引值需要一部分,例如CREATE INDEX char_idx ON tbl1 ( name(10) );
   * 尽量使用最合适的数据类型,能使用ENUM就不使用TINYINT,能使用SMALLINT就不使用MEDIUMINT.这样能节省存储空间,增加数据存储量,提高搜索速度.不要担心这样会对省级产生很大的影响,因为加入从TINYINT类型改变为INT的话,并不会改变原来的数据.
   * 如果知道某个表总是频繁使用的话,可以把它放到hot_cache中,用以下方法:

     SET GLOBAL hot_cache.key_buffer_size=128*1024;
     CACHE INDEX `xxx` IN hot_cache;

   * 把拖沓复杂,速度慢的的查询分解成多个简洁明了的查询,这样尽管查询次数多了,但是总体速度和效率却可能反而更高了,而且也减少了锁表的可能.
   * 执行查询时,尽量不使用外部函数,因为这样的话就无法使用可能存在的索引,并且无论如何都会极大地降低效率.如:... WHERE `create_time` > UNIX_TIMESTAMP(NOW());这样的查询.可以在程序中把当前的时间取得,然后直接执行构造好了的SQL语句.
   * 在索引字段上使用 LIKE 查询时,左边不要使用 '%' 修饰符,这样就可以利用索引,否则无法使用索引.如... `name` LIKE 'yejr%';.
   * 如果有可能,多使用存储过程,这大概能获得 22% 的性能提高.
   * 如果并发访问量相对最大连接数小多了的话,最好使用永久连接,这样能节省不少连接时的系统资源损耗.
   * 定期的在MyISAM表上执行OPTIMIZE TABLE,这能整理随便,提高索引效率.
   * 如果你主要按 col1,col2,...顺序检索记录,请在对表大量更改后执行ALTER TABLE ... ORDER BY col1, col2, ...语句,这可以获得更好的性能.
   * 对于频繁更改的MyISAM表,应尽量避免更新所有变长字段(VARCHAR、BLOB和TEXT).
   * 对于记录总数超过500万的单表,就应该赶紧考虑分表了.分表策略有多种,比如按ID号段,或者按时间切分,等等.
   * 创建数据表时尽量指定字段不能为NULL,并且有默认值.
   * 使用LOAD DATA,而不是使用大批量的INSERT语句来导入数据.
   * 使数据表名和字段名尽可能的短,例如在user表中使用字段名name,而不是user_name.
   * 用DELAY_KEY_WRITE = 1选项让MyISAM更快地更新索引,因为在表关闭之前它们不刷新到硬盘上.缺点是如果服务器如果突然被杀掉了,重启之后就必须运行myisamchk修复索引才行.
   * 采用复制机制来分摊读数据的负载,把写数据只放在主服务器上,把读平均分摊到各个从服务器上,能大大提高系统负载.

   转自: http://selboo.com.cn/post/590/
分享到:
评论

相关推荐

    mysql 性能优化

    mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化...

    mysql优化十大技巧

    mysql优化技巧mysql优化技巧mysql优化技巧mysql优化技巧mysql优化技巧mysql优化技巧mysql优化技巧mysql优化技巧mysql优化技巧mysql优化技巧mysql优化技巧mysql优化技巧mysql优化技巧mysql优化技巧mysql优化技巧mysql...

    mysql优化配置大全

    mysql慢可能是配置不对,阅读一下这个可能对你有帮助 在Apache, PHP, mysql的体系架构... 下面我们了解一下MySQL优化的一些基础,MySQL的优化我分为两个部分,一是服务器物理硬件的优化,二是MySQL自身(my.cnf)的优化。

    mysql优化笔记+资料

    详细介绍了mysql的优化方法,资料包里包含word文档,ppt和图片

    MYSQL优化-一篇很好的优化文章

    21. MYSQL扩展/优化-提供更快的速度 22. MYSQL何时使用索引 23. MYSQL何时不使用索引 24. 学会使用EXPLAIN 25. 学会使用SHOW PROCESSLIST 26. 如何知晓MYSQL解决一条查询 27. MYSQL非常不错 28. MYSQL应避免...

    mysql优化!

    mysql使用中的一些优化。

    大型门户网站核心技术-Mysql优化

    教程名称:大型门户网站核心技术-Mysql优化 课程目录:【】Mysql优化 资料【】Mysql优化01关键技术【】Mysql优化02表的设计【】Mysql优化03慢查询(一)【】Mysql优化04慢查询(二)【】Mysql优化05慢查询(三)【】Mysql...

    php之mysql优化

    mysql优化

    MySql优化.rar

    MySql优化

    我的mysql 优化日记

    我的mysql优化日记 我的mysql优化日记 我的mysql优化日记 我的mysql优化日记

    mysql 优化工具.rar

    为什么要开发这个MySQL 优化工具(Why)   “一键优化”功能,可以优化本地/远程需要优化的机器,将繁琐的优化工作“傻瓜”式操作 根据您的业务需求Step By Step优化的MySQL服务器参数,起到指引的作用,简化用户...

    mysql基础知识和mysql优化整理

    mysql基础知识和mysql优化整理,mysql基础知识和mysql优化整理,

    mysql的优化的一点小建议,!!

    关于mysql的优化的一点小建议,其中的一个参数,需要修改 关于mysql的优化的一点小建议,其中的一个参数,需要修改 关于mysql的优化的一点小建议,其中的一个参数,需要修改 关于mysql的优化的一点小建议,其中的...

    mysql优化-sql高级

    mysql优化从以下几个方面介绍 mysql的架构 索引优化分析 查询截取分析 mysql锁机制 主从复制

    MySql 优化.doc

    MySql优化——MySql 优化.doc

    windows平台mysql优化配置

    windows平台mysql优化配置

    Mysql优化方法介绍.ppt

    Mysql优化方法介绍.ppt

    mysql优化及基础面试题

    mysql优化及基础面试题。 什么是慢查询 慢查询日志,顾名思义,就是查询慢的日志,是指 mysql 记录所有执行超过 long_query_time 参数设定的时间阈值的 SQL 语句的日志。该日志能为 SQL 语句的优化带来很好的帮助...

    MySQL优化大揭秘.rar

    MySQL优化

Global site tag (gtag.js) - Google Analytics