Как ускорить извлечение таблиц с помощью MATLAB и JDBC?
Я обращаюсь к базе данных PostGreSQL 8.4 с помощью JDBC, вызванной MATLAB.
Таблицы, которые меня интересуют, в основном состоят из различных столбцов различных типов данных. Они отбираются через свои временные метки.
Поскольку я хочу получить большие объемы данных, я ищу способ сделать запрос быстрее, чем это происходит прямо сейчас.
То, что я делаю на данный момент следующие:
Сначала я устанавливаю соединение с базой данных и вызываю ее DBConn. Следующим шагом будет: подготовьте инструкцию Select и выполните ее:
QUERYSTRING = ['SELECT * FROM ' TABLENAME '...
WHERE ts BETWEEN ''' TIMESTART ''' AND ''' TIMEEND ''''];
QUERY = DBConn.prepareStatement(QUERYSTRING);
RESULTSET = QUERY.executeQuery();
Затем я сохраняю типы столбцов в переменной COLTYPE (1 для FLOAT, -1 для BOOLEAN и 0 для остальных-почти все столбцы содержат FLOAT). Следующий шаг-обработать каждую строку, столбец за столбцом, и извлечь данные с помощью соответствующих методов. FNAMES содержит имена полей таблицы.
m=0; % Variable containing rownumber
while RESULTSET.next()
m = m+1;
for n = 1:length(FNAMES)
if COLTYPE(n)==1 % Columntype is a FLOAT
DATA{1}.(FNAMES{n})(m,1) = RESULTSET.getDouble(n);
elseif COLTYPE(n)==-1 % Columntype is a BOOLEAN
DATA{1}.(FNAMES{n})(m,1) = RESULTSET.getBoolean(n);
else
DATA{1}.(FNAMES{n}){m,1} = char(RESULTSET.getString(n));
end
end
end
Когда я закончу с моей просьбой, я закрою заявление и соединение.
У меня нет набора инструментов базы данных MATLAB, поэтому я ищем решения без него.
Я понимаю, что очень неэффективно запрашивать данные каждого отдельного поля. Тем не менее, я не смог найти способ получить больше данных сразу - например, несколько строк одного столбца. Есть ли какой-нибудь способ сделать это? Есть ли у вас другие предложения по ускорению запроса?
Comments