Created
March 18, 2019 02:13
-
-
Save DaveIW2034/f37b2c1cd504d0d672838a2acb7e6d41 to your computer and use it in GitHub Desktop.
mysql_optimize.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
1 查询缓存, Mysql函数会使mysql默认不开启查询缓存. | |
2 explain, explain你的select查询. | |
3 一行数据时, 使用limit 1. | |
4 为搜索字段建立索引. | |
5 join表的时候使用相当类型的例, 并将其索引. | |
两个表中的join字段是被建立过索引的, 用来被join的字段应该是相同类型的. string类型需要相同的字符集才行. | |
6 不要使用ORDER BY RAND() MYSQL会不得不去执行Rand()(很耗cpu时间), 而且这是为了每一行记录去执行, 然后再对其排序. | |
就算你用了limit 1 也无济于事(因为要排序) | |
7 避免使用select * (查询变慢, 网络传输的话, 增加网络负担), 应该养成用什么取什么就好的习惯 | |
8 永远为每张表设置一个ID | |
9 使用Enum, 而不是varchar, Enum 类型时非常快和紧凑的, 在实际上, 其保存的事tinyint, 担起外表显示为字符串. | |
procedure analyse() | |
10 从procedure analyse() 取得建议. | |
只用从表中有实际的数据, 这些建议才会变得有用, 大的决定需要有数据作为基础. | |
11 尽可能的使用not null. | |
12 Prepared statements. | |
13 无缓冲的查询. | |
14 把ip地址存成Unsigned Int. | |
INET_ATON(), 字符串IP转换成一个整形. | |
INET_NTOA(), 整形妆换成一个字符串IP. | |
15 固定长度的表会更快. 但会浪费空间, 定长字段, 都需要分配固定空间. 垂直分割技术(一张表分割成多张表, 定长字段和不定长字段分离.), | |
16 垂直分割. | |
把数据库中的表按照列变成几张表的方法, 这样可以降低表的复杂度和字段的数目, 从而达到优化的目的. | |
小一点的表会有好的性能. | |
被分出去的字段所形成的表, 你不会经常的join他们, 不然, 会导致性能下降. | |
17 拆分大的delete或insert语句, 使用limit条件. | |
18 越小的列会越快, 保证足够的扩展空间. | |
19 选择正确的存储引擎.(InnoDB, MyISAM) | |
20 使用一个对象关系映射器 | |
一个ORM可以做的所有事情, 也能被手动的编写出来, 但这需要一个高级专家. | |
21 小心“永久链接” | |
""" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment