个人经验总结:MySQL数据库优化技巧集锦
、优化SQL
JOIN表 GROUP BY ORDER BY DISTINCT 不要使用SQL来做:
成为一只计算器 技巧:
键码适合搜索,但不适合索引列的插入/更新。 保持数据为数据库第三范式,但不要担心冗余信息或这如果你需要更快的速度,创建总结表。 在大表上不做GROUP BY,相反创建大表的总结表并查询它。 UPDATE table set count=count+1 where key_column=constant非常快。 对于大表,或许最好偶尔生成总结表而不是一直保持总结表。 充分利用INSERT的默认值。
十三、不同SQL服务器的速度差别(以秒计)
mysql 367 249 mysql_odbc 464 db2_odbc 1206 informix_odbc 121126 ms-sql_odbc 1634 Oracle_odbc 20800 solid_odbc 877 sybase_odbc 17614
插入350768行: NT Linux mysql 381 206 mysql_odbc 619 db2_odbc 3460 informix_odbc 2692 ms-sql_odbc 4012 oracle_odbc 11291 solid_odbc 1801 sybase_odbc 4802
在上述测试中,MySQL配置8M高速缓存运行,其他数据库以默认安装运行。
十四、重要的MySQL启动选项
thread_cache_size 如果需要大量新连接,修改它。 key_buffer_size 索引页池,可以设成很大。 bdb_cache_size BDB表使用的记录和键吗高速缓存。 table_cache 如果有很多的表和并发连接,修改它。 delay_key_write 如果需要缓存所有键码写入,设置它。 log_slow_queries 找出需花大量时间的查询。 max_heap_table_size 用于GROUP BY sort_buffer 用于ORDER BY和GROUP BY myisam_sort_buffer_size 用于REPAIR TABLE join_buffer_size 在进行无键吗的联结时使用。
十五、优化表
ANALYSE过程可以帮助你找到表的最优类型:SELECT * FROM table_name PROCEDURE ANALYSE()。 对于不保存NULL值的列使用NOT NULL,这对你想索引的列尤其重要。 将ISAM类型的表改为MyISAM。 如果可能,用固定的表格式创建表。 不要索引你不想用的东西。 利用MySQL能按一个索引的前缀进行查询的事实。如果你有索引INDEX(a,b),你不需要在a上的索引。 不在长CHAR/VARCHAR列上创建 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |