欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

oracle = 不走索引

江奕云1年前7瀏覽0評論

Oracle 是一款廣泛應用于企業級數據庫管理系統的軟件。在使用Oracle 進行數據庫管理的過程中,索引是一項非常重要的功能。通過創建合適的索引來提高查詢效率,加快查詢速度。然而,即便是在有索引的情況下,查詢依然有可能不走索引。

我們來看一個例子:

SELECT * FROM customers WHERE last_name = ‘Smith’;

如果 customers 表上有針對 last_name 列的索引,那么查詢就會走索引,查詢速度也會非常快。但是,如果 last_name 列的數據比較少,比如全表只有不到 1% 的數據是 last_name 為 'Smith',那么 Oracle 就很可能不使用索引。

這是因為在這種情況下,如果使用索引,Oracle 需要借助索引樹來找到匹配項,但是如果數據比較少,那么 Oracle 在查詢數據時就會選擇全表掃描,因為它認為經過索引查找的時間比全表掃描到這條數據的時間還要長。

更進一步地,以下幾種情況也有可能導致不走索引:

1.使用計算表達式查詢

SELECT * FROM customers WHERE salary * 12 >10000;

這種情況 Oracle 不會使用索引,因為它需要先對 salary 再進行計算,索引不支持計算。

2.使用 or 語句查詢

SELECT * FROM customers WHERE last_name = ‘Smith’ OR first_name = ‘John’;

這種情況雖然 last_name 列上有索引,但 Oracle 仍然不會使用索引,因為涉及到或語句,需要掃描整張表。

3.使用 like 語句查詢

SELECT * FROM customers WHERE last_name like ‘Sm%’;

這種情況雖然 last_name 列上有索引,但是 Oracle 不會使用索引,因為 like 語句導致索引不生效。

總之,這些情況下 Oracle 會放棄使用索引而選擇全表掃描。這也就是為什么我們要合理地設計索引,以避免不走索引。