Oracle
 sql >> база данни >  >> RDS >> Oracle

Дали индексът е клъстерен или неклъстериран в Oracle?

По подразбиране всички индекси в Oracle не са клъстерирани. Единствените групирани индекси в Oracle са индексите на първичния ключ на организираните по индекс таблици (IOT).

Можете да определите дали една таблица е IOT, като погледнете IOT_TYPE колона в ALL_TABLES изглед (неговият първичен ключ може да бъде определен чрез заявка към ALL_CONSTRAINTS и ALL_CONS_COLUMNS показвания).

Ето някои причини, поради които вашата заявка може да върне подредени редове:

  1. Вашата таблица е организирана по индекс и FIELD е водещата част от неговия първичен ключ.
  2. Вашата таблица е организирана на купчина, но редовете случайно са подредени по FIELD , това се случва понякога в нарастваща колона за самоличност.

Случай 2 ще върне сортирани редове само случайно. Редът на вмъкванията не е гарантиран, освен това Oracle е свободен да използва повторно стари блокове, ако някои случайно имат свободно място в бъдеще, нарушавайки крехкото подреждане.

Случай 1 през повечето време ще връща подредени редове, но не трябва да разчитате на него, тъй като редът на върнатите редове зависи от алгоритъма на пътя за достъп, който може да се промени в бъдеще (или ако промените параметъра на DB, особено паралелизма ).

И в двата случая, ако искате подредени редове, трябва да предоставите клауза ORDER BY:

SELECT field 
  FROM (SELECT field 
          FROM TABLE 
         ORDER BY field) 
 WHERE rownum <= 100;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използвайте tnsnames.ora в Oracle SQL Developer

  2. Как да определите езика (английски, китайски...) на даден низ в Oracle?

  3. Може ли управляваният от Oracle драйвер да използва правилно async/await?

  4. Как да получите работни дни или часове между две дати

  5. Как да проверя NLS_LANG на клиента?