* 针对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进行性能优化的技巧和窍门。1.存储引擎的选择如果数据表需要事务处理,应该考虑使用InnoDB,因为它完全符合ACID特性。如果不需要事务处理,使用默认存储引擎MyISAM是比较明智的。并且不要...
嘿,技术小伙伴们!是不是一想到MySQL面试就头疼?别担心,我们懂你!那些复杂的查询、繁琐的索引、还有让人...而且,我们还会告诉你一些面试中的小窍门,比如怎么让回答更吸引人,怎么展现你的技术深度和广度。
《Delphi生活小窍门——典型数据库实例源码解析》 在编程领域,Delphi作为一款强大的RAD(快速应用开发)工具,深受程序员喜爱。它以其高效的编译器、直观的可视化界面设计以及丰富的组件库著称。本资料集“Delphi...
3. 数据库交互:MySQL或其他数据库的使用、SQL查询优化、数据安全等数据库相关技术。 4. 超全局变量:$_GET、$_POST、$_COOKIE、$_SESSION等PHP中的超全局变量的使用方法和注意事项。 5. 核心函数库:字符串处理、...
阿里云专有云Enterprise版云数据库RDS V3.3.0 性能白皮书 以下是阿里云专有云Enterprise版云数据库RDS V3.3.0 性能白皮书的知识点摘要: ...云数据库RDS的MySQL版提供了 MySQL 数据库的性能优化、监控和管理等功能。
本书主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在Perl、 Java、.NET、PHP中的用法。 本书自第1版开始着力于教会读者“以正则表达式来思考”,来让读者...
- Tips & Tricks:技巧和窍门文档,分享了一些使用组件的实用技巧和最佳实践。 总的来说,Nextsuite6_11-21.rar组件包为开发者提供了一整套强大的VCL组件,覆盖了数据展示、数据库交互、对象调试和电子表格处理等多...
《精通正则表达式(第3版)》主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了在Perl、Java、.NET、PHP中正则表达式的用法。 《精通正则表达式(第3版)》自第1版开始着力于...
- 介绍如何利用NetBeans平台特性优化用户界面。 #### 四、标准模块使用与扩展 - **第16章:帮助系统** - 介绍NetBeans平台的帮助系统。 - 讲解如何创建和定制帮助文档。 - 分析帮助系统在软件开发中的作用。 ...
《DELPHI技巧集.chm》可能是包含了一系列Delphi编程的实用技巧和窍门,涵盖了从基础语法到高级特性的方方面面。通过阅读这份文档,你可以了解到如何优化代码,提高程序性能,以及如何解决在开发过程中遇到的各种问题...
2. **效率优化**:避免在循环中执行数据库操作,尽量减少数据库连接的打开和关闭次数。 3. **缓存利用**:对于频繁访问但不常更新的数据,可以考虑使用服务器端缓存提高性能。 4. **安全防护**:防止SQL注入攻击,对...
MediPro学校网站系统基于PHP+MYSQL开发,在MediPro文章内容网站的基础上,预设了学校介绍、校园新闻、校园风光、教育教学、党建园地、资源下载、学生天地、互动交流等学校网站常用的二十多个栏目和测试数据,采用...