1.当通配符“%”或者“_”作为查询字符串的第一个字符时,索引不会被使用

针对此条,做了几个测试(stock_no是建立了索引):
1.1 select a.item_barcode, a.stock_no, a.balance_qty
  from ERP.st_itembarcode_stock a
 where a.stock_no like '%C'
得到的是
 SELECT STATEMENT, GOAL = CHOOSE 2472 63013 1575325 2472
 TABLE ACCESS FULL ERP     ST_ITEMBARCODE_STOCK 2472 63013 1575325 2472
1.2 select a.item_barcode, a.stock_no, a.balance_qty
  from ERP.st_itembarcode_stock a
 where a.stock_no like 'C%'
得到的是:
 SELECT STATEMENT, GOAL = CHOOSE 2472 67882 1697050 2472
 TABLE ACCESS FULL ERP   ST_ITEMBARCODE_STOCK 2472 67882 1697050 2472
1.3 select a.item_barcode, a.stock_no, a.balance_qty
  from kxstepiii.st_itembarcode_stock a
 where a.stock_no like ' C%' [color=#FF0000]-- 这里前面有一个空格

得到的是:
 SELECT STATEMENT, GOAL = CHOOSE 1362 15559 388975 1362
 TABLE ACCESS BY INDEX ROWID ERP   ST_ITEMBARCODE_STOCK 1362 15559 388975 1362
  INDEX RANGE SCAN ERP   INX_ST_ITEM_BARCODESTOCK_2 87 15559 87[/color]使用'_'得到的也是一样的结果.
这个怎么解? 2.不用“<>”或者“!=”操作符。对不等于操作符的处理会造成全表扫描,可以用“<” or “>”代替
针对此条,做了几个测试(position_id是建立了索引):

2.1 select a.position_id , a.stock_no, a.balance_qty
  from ERP.st_itembarcode_stock a
  where a.position_id > 100
得到的是:
SELECT STATEMENT, GOAL = CHOOSE 2472 1260238 20163808 2472
 TABLE ACCESS FULL ERP ST_ITEMBARCODE_STOCK 2472 1260238 20163808 2472也是不会使用索引的.
烦请大侠解释一下,实在令人迷惑.
还有,哪位可以推荐一本SQL执行的内部机制. 比如如果解析不同的SQL语句. 谢谢!!!