除了已经建议的索引之外,如果分区表很大,您可能还需要查看分区表.
这里很难具体,因为我们的信息非常有限,但正确的索引和分区可能会有很长的路要走.正确索引可能是一个很长的主题,但在一般意义上,您将要索引您查询的列.
例如,假设您有一个员工表,并且您拥有常用的SSN,FNAME,LNAME列.除了这些列之外,我们还会说表中还有10列.
现在您有了这个查询:
SELECT FNAME, LNAME FROM EMPLOYEES WHERE SSN = 'blah';
忽略SSN可能是主键并且可能已经有一个唯一索引的事实,您可能会通过创建包含列(SSN,FNAME,LNAME)的另一个复合索引来看到性能优势.这是有益的原因是因为数据库可以通过简单地查看复合索引来满足此查询,因为它包含排序和紧凑空间中所需的所有值. (即I / O较少).尽管SSN上的索引只是进行全表扫描的更好的访问方法,但数据库仍然必须读取索引(I / O)的数据块,找到包含指向记录的指针的值.需要满足查询,然后需要读取不同的数据块(读取:更随机的I / O),以便检索fname和lname的实际值.
这显然非常简单,但以这种方式使用索引可以大大减少I / O并提高数据库的性能.
您可能会发现其他一些链接有用: