一、 索引(index)使用的问题
是全表扫描还是索引范围扫描主要考虑sql的查询速度问题。这里主要关心读取的记录的数目。根据donald k .burleson的说法,使用索引范围扫描的原则是: 【相关文章:微软WCF给SOA带来的影响】
1. 索引(index),用还是不用?这是个的问题。 【扩展阅读:Web服务的期望与现实】
【扩展信息:SOA随信息服务而演化】 对于数据有原始排序的表,读取少于表记录数40%的查询应该使用索引范围扫描。对读取多于表记录数40%的查询应全表扫描。 对于未排序的表,读取少于表记录数7%的查询应该使用索引范围扫描,反之,对读取多于表记录数7%的查询应全表扫描。 注:在不同的书中,对是否使用索引的读取记录的百分比值不太一致,基本上是一个经验值,但是读取记录的百分比越低,使用索引越有效。2. 如果列上有建索引,什么sql查询是有用索引(index)的?什么sql查询是没有用索引(index)的?
存在下面情况的sql,不会用到索引: 存在数据类型隐形转换的,如: select * from staff_member where staff_id=’123’; 列上有数学运算的,如: select * from staff_member where salary*2<10000; 使用不等于(<> )运算的,如: select * from staff_member where dept_no<>2001; 使用substr字符串函数的,如: select * from staff_member where substr(last_name,1,4)=’fred’; ‘%’通配符在第一个字符的,如: select * from staff_member where first_name like ‘%don’; 字符串连接(||)的,如: select * from staff_member where first_name||’’=’donald’ ... 下一页