Порядок строк в константе ResultSet для того же запроса SQL через JDBC в том же состоянии данных БД?

Возможно, вам понадобится закодировать объект unicode с помощью .encode('utf-8')

. В вашем файле python добавьте это в первую строку

# -*- coding: utf-8 -*-

. Если ваш файл сценария работает автономно, добавьте его во вторую строку

#!/usr/local/bin/python
# -*- coding: utf-8 -*-

. Здесь это документ: PEP 0263

0
задан aviad 16 January 2019 в 14:40
поделиться

1 ответ

Вы можете гарантировать порядок строк, включив предложение ORDER BY, которое включает в себя все столбцы, необходимые для уникальной идентификации строки. Фактически, это единственный способ гарантировать порядок от повторных вызовов оператора SELECT, даже если в базе данных ничего не изменилось. Без однозначного предложения ORDER BY ядро ​​базы данных может свободно возвращать строки в любом удобном для них порядке в данный момент.

Рассмотрим простой пример:

Вы являетесь единственным пользователем базы данных. Механизм базы данных имеет кэш строк в памяти, который может содержать последние 1000 найденных строк. Сервер базы данных был только что перезапущен, поэтому кеш пуст. Вы SELECT * FROM tablename и ядро ​​базы данных извлекаете 2000 строк, последние 1000 из которых остаются в кэше. Затем вы делаете SELECT * FROM tablename снова. Механизм базы данных проверяет кэш и находит 1000 строк из предыдущего запроса, поэтому он немедленно возвращает их, потому что при этом ему больше не придется нажимать на диск. Затем он приступает к поиску других 1000 строк. Конечным результатом является то, что 1000 строк, которые были возвращены последними для начального SELECT, фактически возвращаются первыми для последующего SELECT.

0
ответ дан Gord Thompson 16 January 2019 в 14:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: