1、适当时水平分割和垂直分割表;
[@more@]1、适当时水平分割和垂直分割表;
水平分割是按照行将一个表分割为多个表,这可以提高每个表的查询速度,但查询、更新时要选择不同的表,统计时要汇总多个表,因此应用程序会更复杂。
垂直分割是对于一个列很多的表,若某些列的访问频率远远高于其它列,就可以将主键和这些列作为一个表,将主键和其它列作为另外一个表。通过减少列的宽度,增加了每个数据页的行数,一次I/O就可以扫描更多的行,从而提高了访问每一个表的速度。但是由于造成了多表连接,所以应该在同时查询或更新不同分割表中的列的情况比较少的情况下使用。
2、保留冗余列
当两个或多个表在查询中经常需要连接时,可以在其中一个表上增加若干冗余的列,以避免表之间的连接过于频繁。由于对冗余列的更新操作必须对多个表同步进行,所以一般在冗余列的数据不经常变动的情况下使用。
3、增加派生列
派生列是由表中的其它多个列计算所得,增加派生列可以减少统计运算,在数据汇总时可以大大缩短运算时间。
4、任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。
5、带通配符(%)的like语句
where device_name like '%NOKIA%';不会利用上索引,但where device_name like 'NOKIA%';会利用上索引。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/38542/viewspace-914939/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/38542/viewspace-914939/