一. 索引(index)使用的问题
是全表扫描还是索引范围扫描主要考虑sql的查询速度问题.这里主要关心读取的记录的数目.根据donald k .burleson的说法,使用索引范围扫描的原则是: 【程序编程相关:对高端防火墙未来发展趋势的探讨】
1. 索引(index),用还是不用?这是个的问题. 【推荐阅读:防火墙的“发胖”与“发威】
对于未排序的表,读取少于表记录数7%的查询应该使用索引范围扫描,反之,对读取多于表记录数7%的查询应全表扫描. 【扩展信息:网络安全产品大市场 防火墙成为主力军】对于数据有原始排序的表,读取少于表记录数40%的查询应该使用索引范围扫描.对读取多于表记录数40%的查询应全表扫描. 注:在不同的书中,对是否使用索引的读取记录的百分比值不太一致,基本上是一个经验值,但是读取记录的百分比越低,使用索引越有效.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’3. 函数的索引
... 下一页