crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> QSqlQuery считывание данных..
kibsoft
  опции профиля:
сообщение 17.2.2010, 16:53
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

Спасибо сказали: 14 раз(а)




Репутация:   2  


Есть ли способы считать все данные результата запроса без цикла while(query.next()) ? Мне надо считать все данные в QHash. В таблице 52000 записей и все это считывание занимает 6 секунд..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.2.2010, 19:14
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


kibsoft, от того, что ты воспользуешься другим способом скорость не изменится. В качестве объяснения:
Попробуй представить себе, что будет делать процессор в самом компактном случае.

Цитата(kibsoft @ 17.2.2010, 19:53) *
В таблице 52000 записей и все это считывание занимает 6 секунд..
считывание или перебор результатов с помощью while(query.next()) ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Elfinit
  опции профиля:
сообщение 17.2.2010, 20:12
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 127
Регистрация: 17.3.2009
Из: Казань
Пользователь №: 619

Спасибо сказали: 7 раз(а)




Репутация:   1  


Цитата(Litkevich Yuriy @ 17.2.2010, 19:14) *
считывание или перебор результатов

Я думаю, имелся ввиду именно перебор..Так существует способ без цикла поместить данные в контейнер? Через модели?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.2.2010, 20:25
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Elfinit @ 17.2.2010, 23:12) *
Через модели?
а что, это упростит работу? По моему ни сколько.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 17.2.2010, 21:15
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

Спасибо сказали: 44 раз(а)




Репутация:   9  


Цитата(Elfinit @ 17.2.2010, 20:12) *
Через модели?

Так это скорости не прибавит, если только наоборот, потому как SQL-модели являются обертками над QSqlQuery.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 17.2.2010, 23:01
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

Спасибо сказали: 14 раз(а)




Репутация:   2  


Цитата(Litkevich Yuriy @ 17.2.2010, 20:14) *
kibsoft, от того, что ты воспользуешься другим способом скорость не изменится. В качестве объяснения:
Попробуй представить себе, что будет делать процессор в самом компактном случае.

Цитата(kibsoft @ 17.2.2010, 19:53) *
В таблице 52000 записей и все это считывание занимает 6 секунд..
считывание или перебор результатов с помощью while(query.next()) ?


Ну вроде ка перебор..Я заношу каждую запись в QHash.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.2.2010, 23:22
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kibsoft @ 18.2.2010, 2:01) *
Ну вроде ка перебор.
дак ты вокруг цикла сделай так:
QTime t;
t.start();
while(query.next()){
...
}
qDebug() << "while time delta =" << t.elapsed();
и узнаешь точно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 18.2.2010, 0:01
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

Спасибо сказали: 14 раз(а)




Репутация:   2  


Цитата(Litkevich Yuriy @ 18.2.2010, 0:22) *
Цитата(kibsoft @ 18.2.2010, 2:01) *
Ну вроде ка перебор.
дак ты вокруг цикла сделай так:
QTime t;
t.start();
while(query.next()){
...
}
qDebug() << "while time delta =" << t.elapsed();
и узнаешь точно


Да я же так делал..6 секунд получилось. Вопрос то в чем, можно ли как-то по-другому получать данные из запроса? Или уже тут никак не ускорить этот процесс?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.2.2010, 3:29
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Что ты делаешь в этом цикле? Можешь всё тело цикла привести?
Какое-то страшное время у тебя получается.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 18.2.2010, 14:43
Сообщение #10


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

Спасибо сказали: 14 раз(а)




Репутация:   2  


Цитата(Litkevich Yuriy @ 18.2.2010, 4:29) *
Что ты делаешь в этом цикле? Можешь всё тело цикла привести?
Какое-то страшное время у тебя получается.


Таблица с двумя столбцами. Добавляем данные в QHash.
while(query.next())
hash[query.value[0].toString()]=query.value[1].toInt();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 17:37