WEB开发网
开发学院数据库MySQL MySQL查询优化技术系列讲座之使用索引 阅读

MySQL查询优化技术系列讲座之使用索引

 2006-08-06 10:45:06 来源:WEB开发网   
核心提示: · 对于使用了MIN()或MAX()函数的查询,索引数据列中最小或最大值可以很快地找到,MySQL查询优化技术系列讲座之使用索引(4),不用检查每个数据行,· MySQL利用索引来快速地执行ORDER BY和GROUP BY语句的排序和分组操作,·

· 对于使用了MIN()或MAX()函数的查询,索引数据列中最小或最大值可以很快地找到,不用检查每个数据行。

· MySQL利用索引来快速地执行ORDER BY和GROUP BY语句的排序和分组操作。

· 有时候MySQL会利用索引来读取查询得到的所有信息。假设你选择了MyISAM表中的被索引的数值列,那么就不需要从该数据表中选择其它的数据列。在这种情况下,MySQL从索引文件中读取索引值,它所得到的值与读取数据文件得到的值是相同的。没有必要两次读取相同的值,因此没有必要考虑数据文件。

索引的代价

一般来说,如果MySQL能够找到方法,利用索引来更快地处理查询,它就会这样做。这意味着,对于大多数情况,如果你没有对表进行索引,就会使性能受到损害。这就是我所描绘的索引优点的美景。但是它有缺点吗?有的,它在时间和空间上都有开销。在实践中,索引的优点的价值一般会超过这些缺点,但是你也应该知道到底有一些什么缺点。

首先,索引加快了检索的速度,但是减慢了插入和删除的速度,同时还减慢了更新被索引的数据列中的值的速度。也就是说,索引减慢了大多数涉及写操作的速度。发生这种现象的原因在于写入一条记录的时候不但需要写入数据行,还需要改变所有的索引。数据表带有的索引越多,需要做出的修改就越多,平均性能的降低程度也就越大。在本文的"高效率载入数据"部分中,我们将更细致地了解这些现象并找出处理方法。

其次,索引会花费磁盘空间,多个索引相应地花费更多的磁盘空间。这可能导致更快地到达数据表的大小限制:

· 对于MyISAM表,频繁地索引可能引起索引文件比数据文件更快地达到最大限制。

· 对于BDB表,它把数据和索引值一起存储在同一个文件中,添加索引引起这种表更快地达到最大文件限制。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:MySQL 查询 优化

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接