mysql进行优化的地方,简单总结几点:
在设计数据表的时候,尽可能使用最有效(最小的)数据类型,尽可能使用更小的整数类型,可能定义字段类型为 NOT NULL。这会运行的更快,而且每个字段都会节省1个bit。如果在应用程序中确实需要用到 NULL,那么就明确的指定它。不过要避免所有的字段默认值是 NULL),尽可能使用最有效(最小的)数据类型。MySQL有好几种特定的类型能节省磁盘和内存。 尽可能使用更小的整数类型。在 MyISAM 表中,如果没有用到任何变长字段(VARCHAR, TEXT, 或 BLOB字段)的话,那么就采用固定大小的记录格式。这样速度更快,不过可能会浪费点空间。表的主索引应尽可能短。这样的话会每条记录都有名字标识且更高效。只创建确实需要的索引。索引有利于检索记录,但是不利于快速保存记录。如果总是要在表的组合字段上做搜索,那么就在这些字段上创建索引。索引的第一部分必须是最常使用的字段.如果总是需要用到很多字段,首先就应该多复制这些字段,使索引更好的压缩。一个字段很有可能在最开始的一些数量字符是各不相同的,因此在这些字符上做索引更合适。MySQL支持在一个字段的最左部分字符做索引。索引越短,速度越快,不仅是因为它占用更少的磁盘空间,也因为这提高了索引缓存的命中率,由此减少了磁盘搜索。在某些情况下,把一个频繁扫描的表分割成两个更有利。在对动态格式表扫描以取得相关记录时,它可能使用更小的静态格式表的情况下更是如此。
进行数据库操作的时候,能有多简单就有多简单,能不用圆括号就不用圆括号,去掉那些多余的选项,能用SQL解决的就不要用程序语言来处理(mysql处理的速度比解析语言快很多);
删除表中所有数据的时候,用效率更高的TRUNCATE TABLE tbl_name 而不是DELETE FROM tbl_name;
在锁表的情况下,更新多个记录比多次更新记录要快很多,因此:推迟更新并且把很多次更新放在后面一起做。
数据库在连接时的开销很大,一个页面行不要有多次对库进行连接和关闭的操作!
经常需要读写操作的表用 MEMORY(HEAP)表!
在设计数据表的时候,尽可能使用最有效(最小的)数据类型,尽可能使用更小的整数类型,可能定义字段类型为 NOT NULL。这会运行的更快,而且每个字段都会节省1个bit。如果在应用程序中确实需要用到 NULL,那么就明确的指定它。不过要避免所有的字段默认值是 NULL),尽可能使用最有效(最小的)数据类型。MySQL有好几种特定的类型能节省磁盘和内存。 尽可能使用更小的整数类型。在 MyISAM 表中,如果没有用到任何变长字段(VARCHAR, TEXT, 或 BLOB字段)的话,那么就采用固定大小的记录格式。这样速度更快,不过可能会浪费点空间。表的主索引应尽可能短。这样的话会每条记录都有名字标识且更高效。只创建确实需要的索引。索引有利于检索记录,但是不利于快速保存记录。如果总是要在表的组合字段上做搜索,那么就在这些字段上创建索引。索引的第一部分必须是最常使用的字段.如果总是需要用到很多字段,首先就应该多复制这些字段,使索引更好的压缩。一个字段很有可能在最开始的一些数量字符是各不相同的,因此在这些字符上做索引更合适。MySQL支持在一个字段的最左部分字符做索引。索引越短,速度越快,不仅是因为它占用更少的磁盘空间,也因为这提高了索引缓存的命中率,由此减少了磁盘搜索。在某些情况下,把一个频繁扫描的表分割成两个更有利。在对动态格式表扫描以取得相关记录时,它可能使用更小的静态格式表的情况下更是如此。
进行数据库操作的时候,能有多简单就有多简单,能不用圆括号就不用圆括号,去掉那些多余的选项,能用SQL解决的就不要用程序语言来处理(mysql处理的速度比解析语言快很多);
删除表中所有数据的时候,用效率更高的TRUNCATE TABLE tbl_name 而不是DELETE FROM tbl_name;
在锁表的情况下,更新多个记录比多次更新记录要快很多,因此:推迟更新并且把很多次更新放在后面一起做。
数据库在连接时的开销很大,一个页面行不要有多次对库进行连接和关闭的操作!
经常需要读写操作的表用 MEMORY(HEAP)表!