Почему Oracle изменяет физические порядки данных при выполнении массовой вставки? - PullRequest
2 голосов
/ 11 ноября 2011

Мне нужно использовать Java POI для пакетного импорта некоторых файлов Excel в базу данных Oracle. Программа на Java очень проста, просто используйте JDBC для их инерции.

Но когда я проверил таблицу, я обнаружил, что физические порядки данных изменились. Например, я импортирую данные следующим образом:


S/N     Name       
S0001   Name1
S0002   Name2
S0003   Name3
S0004   Name4
S0005   Name5
S0006   Name6
.....

и таблица такая:


S/N     Name       
S0001   Name1
S0003   Name3
S0004   Name4
S0002   Name2
S0006   Name6
S0005   Name5
.....

Кто-нибудь сталкивался с такой же странной проблемой раньше?

1 Ответ

8 голосов
/ 11 ноября 2011

Куча организованной таблицы по своей природе неупорядочена. Если в вашем запросе не указано предложение ORDER BY, Oracle может возвращать данные в любом порядке по своему выбору. И физически можно хранить данные в любом порядке независимо от порядка вставки.

Если вы заботитесь о порядке, в котором возвращаются данные, вы можете добавить соответствующие ORDER BY,

SELECT serial_number, name
  FROM your_table_name
 ORDER BY serial_number
...