全球旧事资料 分类
常用SQL语句书写技巧
作者:来源:javaeye博客发布者:admi
时间:20090511100741点击:2027
SQL结构化查询字符串的改写,是实现数据库查询性能提升的最现实、最有效的手段,有时甚至是唯一的手段,比如在不允许大幅度修改现有数据库结构的情况下。通过优化SQL语句提高查询性能的关键是:根据实际需求情况,建立合适的索引;使用一切可能的方式去利用好索引,避免全表扫描;尽量减少内存及数据IO方面的开销
一、建立索引(一)建立“适当”的索引,是快速查询的基础。索引(i
dex)是除表之外另一重要的、用户定义的存储在物理介质上的数据结构。当根据索引码的值搜索数据时,索引提供了对数据的快速访问。事实上,没有索引,数据库也能根据SELECT语句成功地检索到结果,但随着表变得越来越大,使用“适当”的索引的效果就越来越明显。注意,在这句话中,我们用了“适当”这个词,这是因为,如果使用索引时不认真考虑其实现过程,索引既可以提高也会破坏数据库的工作性能。索引实际上是一种特殊的目录,SQLSERVER提供了两种索引:聚集索引(clusteredi
dex,也称聚类索引、簇集索引)我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。例如:汉语字典中按拼音查某一个字,就是使用“聚集索引”,实际上,你根本用不着查目录,直接在字典正文里找,就能很快找到需要的汉字(假设你知道发音)。非聚集索引(
o
clusteredi
dex,也称非聚类索引、非簇集索引)我们把目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。例如:汉语字典中按部首查某一个字,部首目录和正文一定要刻意的通过页码才能联系到一起,其顺序不是天然一致的。
f聚集索引与非聚集索引的最大区别就在于:聚集索引是对原数据表进行排序,因此只要符合索引条件,就能够直接连续的读取数据记录,几乎可以达到对数据表的零扫描;而非聚集索引仅仅只是另外建了一张索引表,取数据的时候,从索引表取得结果后,还需要到指针所指的数据行读取相应数据,因此,在性能上,聚集索引会大大优于非聚集索引。但是在一张表中,聚集索引只允许一个,是比较宝贵的,因此要尽可能的用于那些使用频率最高的索引上。另外,查询时必需要用到索引的起始列,否则索引无效。另外,起始列也必需是使用频繁的列,那样的索引性能才会达到最优化。
(二)表:何时应使用聚集索引或非聚集索引
动作描述使用聚集索引使用非聚集索引列经常被分组排序○○返回r
好听全球资料 返回顶部