Mysql的优化经验

  1. 从数据库结构做起1. 字段类型的定义时遵循以下规则:1. 选用字段长度最小2. 优先使用定长型3. 尽可能的定义 "NOT NULL" 4. 数值型字段中避免使用 "ZEROFILL" 5. 如果要储存的数据为字符串, 且可能值已知且有限, 优先使用 enum 或 set 2. 索引的优化至关重要(以下如果没有特殊说明, 均指查询密集的情况)(http://www.002pc.com)

  1. 被索引的字段的长度越小, 该索引的效率越高2. 被索引的字段中, 值的重复越少, 该索引的效率越高3. 查询语句中, 如果使用了 "group" 子句, 根据其中字段出现的先后顺序建立多字段索引4. 查询语句中, 如果使用了 "distinct", 根据其中字段出现的先后顺序建立多字段索引5. "where" 子句中, 出现对同一表中多个不同字段的 "and" 条件时, 按照字段出现的先后顺序建立多字段索引6. "where" 子句中, 出现对同一表中多个不同字段的 "or" 条件时, 对重复值最少的字段建立单字段索引7. 进行 "内/外连接" 查询时, 对 "连接字段" 建立索引8. 对 "主键" 的 "unique" 索引 毫无意义, 不要使用9. 被索引字段尽可能的使用 "NOT NULL" 属性10. 对写入密集型表, 尽量减少索引, 尤其是 "多字段索引" 和 "unique" 索引2. 查询语句的优化1. 多多利用 "explain" 查询索引使用情况, 以便找出最佳的查询语句写法和索引设置方案2. 慎用 "select *", 查询时只选出必须字段3. 查询使用索引时, 所遍历的索引条数越少, 索引字段长度越小, 查询效率越高 (可使用 "explain" 查询索引使用情况)

  4. 避免使用 mysql 函数对查询结果进行处理, 将这些处理交给客户端程序负责5. 使用 "limit" 时候, 尽量使 "limit" 出的部分位于整个结果集的前部, 这样的查询速度更快, 系统资源开销更低6. 在 "where" 子句中使用多个字段的 "and" 条件时, 各个字段出现的先后顺序要与多字段索引中的顺序相符7. 在 "where" 子句 中使用 "like" 时, 只有当通配符不出现在条件的最左端时才会使用索引8. 在 mysql 4.1 以上版本中, 避免使用子查询, 尽量使用 "内/外连接" 实现此功能9. 减少函数的使用, 如果可能的话, 尽量用单纯的表达式来代替10. 避免在 "where" 子句中, 对不同字段进行 "or" 条件查询, 将其拆分成多个单一字段的查询语句效率更高。

  附: Mysql 字段长度说明表

Mysql 字段长度说明
TINYINT 1 字节 SMALLINT 2 字节
MEDIUMINT 3 字节 INTEGER: 4 字节
BIGINT 8 字节 DOUBLE 8 字节
FLOAT(X) X <=24: 4 字节
X > 24: 8 字节
DECIMAL(M,D) M<D: D+2 字节
M>=D: M 字节
DATE 3 字节 DATETIME 8 字节
TIMESTAMP 4 字节 TIME 4 字节
YEAR 1 字节    
CHAR(M) M 字节 VARCHAR(M) 值长度 + 1 字节
TINYBLOB 值长度 + 1 字节 TINYTEXT 值长度 + 1 字节
BLOB 值长度 + 2 字节 TEXT 值长度 + 2 字节
MEDIUMBLOB 值长度 + 3 字节 MEDIUMTEXT 值长度 + 3 字节
LONGBLOB 值长度 + 4 字节 LONGTEXT 值长度 + 4 字节
ENUM 1 或 2 字节
取决于枚举值数
SET 1,2,3,4, 8
取决于成员数量
时间: 2024-10-29 21:14:12

Mysql的优化经验的相关文章

一些Mysql的优化经验

mysql|优化  一些 Mysql 的优化经验    1. 从数据库结构做起1. 字段类型的定义时遵循以下规则:1. 选用字段长度最小2. 优先使用定长型3. 尽可能的定义 "NOT NULL" 4. 数值型字段中避免使用 "ZEROFILL" 5. 如果要储存的数据为字符串, 且可能值已知且有限, 优先使用 enum 或 set 2. 索引的优化至关重要(以下如果没有特殊说明, 均指查询密集的情况)     1. 被索引的字段的长度越小, 该索引的效率越高2.

MySQL数据库优化经验详谈(服务器普通配置)第1/3页_Mysql

安装好mysql后,配制文件应该在/usr/local/mysql/share/mysql目录中,配制文件有几个,有my- huge.cnf my-medium.cnf my-large.cnf my-small.cnf,不同的流量的网站和不同配制的服务器环境,当然需要有不同的配制文件了. 一般的情况下,my-medium.cnf这个配制文件就能满足我们的大多需要:一般我们会把配置文件拷贝到/etc/my.cnf 只需要修改这个配置文件就可以了,使用mysqladmin variables ex

mysql性能优化之索引优化_Mysql

作为免费又高效的数据库,mysql基本是首选.良好的安全连接,自带查询解析.sql语句优化,使用读写锁(细化到行).事物隔离和多版本并发控制提高并发,完备的事务日志记录,强大的存储引擎提供高效查询(表记录可达百万级),如果是InnoDB,还可在崩溃后进行完整的恢复,优点非常多.即使有这么多优点,仍依赖人去做点优化,看书后写个总结巩固下,有错请指正. 完整的mysql优化需要很深的功底,大公司甚至有专门写mysql内核的,sql优化攻城狮,mysql服务器的优化,各种参数常量设定,查询语句优化,主

MySQL索引优化的实际案例分析_Mysql

Order by desc/asc limit M是我在mysql sql优化中经常遇到的一种场景,其优化原理也非常的简单,就是利用索引的有序性,优化器沿着索引的顺序扫描,在扫描到符合条件的M行数据后,停止扫描:看起来非常的简单,但是我经常看到很多性能较差的sql没有利用这个优化规律,下面将结合一些实际的案例来分析说明: 案例一: 一条sql执行非常的慢,执行时间为: root@test 02:00:44 SELECT * FROM test_order_desc WHERE END_TIME>

mysql 数据库安装经验问题汇总_Mysql

在同事那整了个免安装版的Mysql,然后添加到window服务,但是中间出现很多问题,总结一下个人经验,希望其他人不要走弯路. 1)在同事那或者去官网下载的是mysql的压缩包(免安装包). 2)接下来就需要进行一些列的配置才能使免安装的Mysql在服务中启动,换句话说可以使用net start mysql命令启动. 以下以我把压缩包解压到F:\mysql目录为例. 3)在F:\mysql目录中找到my-large.ini,把它复制一份,更名为my.ini,也放在F:\mysql目录里面. 4)

MySQL数据库21条最佳性能优化经验_Mysql

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情. 当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这些优化技巧对你有用. 1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被M

MySQL性能优化的最佳20+条经验_Mysql

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这些优化技巧对你有用. 1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被My

详解MySQL 数据库优化方法

用analyze进行处理,定期进行处理 ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tb1_name[, tbl_name]... 对表进行定义分析analyze table table_name CHECK TABLE tb1_name[,tbl_name]...[option]...option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED} 定期对表进行优化 OPTIMIZE [LOCAL | NO_W

SQL优化经验总结_MsSql

一. 优化SQL步骤1. 通过 show status和应用特点了解各种 SQL的执行频率     通过 SHOW STATUS 可以提供服务器状态信息,也可以使用 mysqladmin extende d-status 命令获得. SHOW STATUS 可以根据需要显示 session 级别的统计结果和 global级别的统计结果.    如显示当前session: SHOW STATUS like "Com_%"; 全局级别:show global status;    以下几个