网络编程
位置:首页>> 网络编程>> 数据库>> MySQL查询优化(2)

MySQL查询优化(2)

作者:赵伟伟 来源:IT168 发布时间:2009-03-09 14:41:00 

标签:MySQL,数据库,查询优化

10、 对于那些声明为可变长度的数据列(如varchar型),时间长了会使得数据表出现很多碎片,减慢查询效率,我们可以用OPTIMIZE TABLE语句对之进行整理。

11、 将数据压缩到BLOB数据列里,就能只通过一次性查询找到数据,或者把BLOB数据列单独存入一个文件。

12、 有时我们可以人为的为一个数据表建立索引,然后查询这个索引达到快速查询的目的。例如:我们先给一个数据表再建一个数据列,根据数据表里其他数据列计算出一个散列值并保存到刚建的数据列里,这样就可以通过搜索散列值的方法去检索想要找到数据行。

MySQL查询优化程序是尽可能的使用索引,而且是尽可能地使用那些最为挑剔的索引,以便尽可能多和尽可能快的排除那些不符合查询条件的数据行。可以依照以下原则帮助优化程序:

1. 尽量对同类型的数据列进行比较,必要时可以先用ALTER TABLE语句把其中之一的类型修改为与另一个数据列相同。

2. 尽量让已经索引的数据列在比较表达式中单独出现。

3. 尽量减轻模糊匹配查询,例如:不要在LIKE模式的开头使用通配符等。

4. 多试几种查询命令。

5. 不要滥用MySQL的类型自动转换功能,如:数字3就不能写成字符‘3’,加重MySQL的类型转换,会使它的性能下降。

下面说说加载数据。

加载数据时要采用批量加载,尽量减少MySQL对索引的刷新率,例如:LOAD DATA 语句要比INSERT 语句效率高,如果必须使用INSERT 语句,请尽量使他们集中在一起,减少对索引的刷新次数。对于支持事务处理机制的数据表类型,应该把这些INSERT 语句放在同一个事务里,对于不支持事务处理机制的数据表类型,应该现对数据表进行写锁定,然后在数据表锁定期间发出这些INSERT语句。对于大量数据,可以先加载数据在建立索引。

在机器硬件方面:

1. 应为机器安装更多内存。

2. 购置高速磁盘以缩短I/O等待时间。

3. 使用多个物理硬盘,提高并行操作能力。

4. 使用多个处理器。

在一个具体的数据库应用系统中,要根据实际需要来采用各种优化策略,以便使顾客与公司达到双赢的目的。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com