如何调优MySQL
首先:选择最合适的字段属性。
MySQL在创建数据库时,数据库中的表越小越好,从而提高查询速度。然而,现实往往不尽人意。每天可能产生的数据量在数万或数十万。此时,在创建表时应充分考虑字段长度。例如,在存储电话号码时,如果将其写为char(255),显然会给数据库带来大量不必要的空间浪费。Char(11)可以解决这个问题。
第二:使用连接而不是子查询。
子查询的优点是可以使用简单的选择语句来完成具有复杂逻辑的查询操作,并且可以避免死锁。但有时您也可以考虑使用连接查询来完成它。毕竟,join查询不需要像子查询那样在内存中创建一个临时表,然后从临时表中过滤数据,从而加快查询速度。
https://pan.baidu.com/s/1d22iuAit2eKZt_gJbmBWnw?pwd=wqhj
提取码: wqhj
第三:使用联合查询。
Union有Union的意思。它可以将多个选择语句的查询结果组合成一个查询,取代手动创建临时表的过程。此外,union还有另一个优点,即在使用后自动删除,完全不占用内存空间。这是真正的“当事情结束,刷你的衣服,不要碰你的身体”。
第四:通过交易进行管理。
事务在数据库调优中是一个古老的概念。事务由于其四个特点,是不可避免的调优方法之一,它可以保证数据的完整性和一致性。可以用一句话来概括:“走不到尽头,就回到原点。”
第五:锁好表。
事务处理虽然可以保证数据库的完整性和一致性,但也存在一些不足。用户只能等待事务本身完成,因为其他所有操作都可以继续,直到事务被发出。如果用户访问的次数特别大,会造成系统严重的延迟。
因此,锁表的方法可以确保所有被locktable修改过的查询语句在执行unlocktables指令之前不会被插入、删除和修改。
第六:合理使用外键。
外键的作用是确保表之间的引用完整性。使用外键可以有效地增加数据之间的相关性。
第七:正确使用索引。
索引是提高数据库性能最常用的方法。正确使用索引可以大大提高查询效率。
但是,不可能为所有列创建索引,因为这会占用内存,而且维护起来很麻烦。它是一把双刃剑,所以需要根据实际情况正确使用索引。
第八:优化查询语句。
一个好的查询语句可以明显提高查询效率,否则就会慢到怀疑程序是否写错了。
那么什么样的查询语句是好的呢?请参考以下要求
1. 在进行比较时,尽量在相同的字段之间进行比较。例如,带索引的int字段不能与bigint字段进行比较。
2. 不要在已索引的字段上使用函数,因为这会使索引无效。
3.在查询时不鼓励使用like语句,因为它将消耗系统的部分性能