1

Тема: Збереження результатів виконанння sql запиту

Всім привіт, пишу прогу(під Android, де юзаю Sqlite), де використовується бд з близько 40К записів. Так от запит, де я вибираю усі записи, що мають довжину 5 знаків виконується від 780 до 1200 мс, думаю, що було б добре зберігати десь результат, а потім уже при відкритті додатку зчитувати його і здійснювати потрібні маніпуляції.
Буду вдячний, якщо підкажете, як це оптимізувати.

2

Re: Збереження результатів виконанння sql запиту

ем, транзакції юзав, але ніяких змін не дає, індексування так само(ну це логічно)

3

Re: Збереження результатів виконанння sql запиту

на рахунок кешування маю сумніви: все одно потрібно буде 1 раз виконати запит, а потім уже користуватись його результатом

4 Востаннє редагувалося 0xDADA11C7 (17.10.2014 17:40:27)

Re: Збереження результатів виконанння sql запиту

Якщо вам потрібно зберігати прості структури даних, то функціонал sqlite є надлишковим. А взагалі 40К записів в мобільному пристрої це круто.

5

Re: Збереження результатів виконанння sql запиту

Наведіть приклад вашого запиту.

Подякували: koala1

6

Re: Збереження результатів виконанння sql запиту

1-ша версія
SELECT column FROM table where LENGTH(column)=5 // ну мені там треба буде вибрати рандомно 1 запис тому
2-га версія
SELECT column FROM table where LENGTH(column)=5 ORDER BY RANDOM() LIMIT 1

7

Re: Збереження результатів виконанння sql запиту

0xDADA11C7 написав:

Якщо вам потрібно зберігати прості структури даних, то функціонал sqlite є надлишковим. А взагалі 40К записів в мобільному пристрої це круто.

так, звісно, прості структури.
що порадите?

8 Востаннє редагувалося koala (17.10.2014 19:49:26)

Re: Збереження результатів виконанння sql запиту

CREATE INDEX lengthof5 ON table( column ) WHERE LENGTH( column ) = 5

чи якось таке, не певен в синтаксисі

Подякували: hotHead1

9

Re: Збереження результатів виконанння sql запиту

Взагалі пишуть,що MySQL швидше за SQLite. Особливо при високонавантажених проектах.
Не перевіряв,але ви можете це перевірити самі. І якщо так,то перейдіть на неї.

10

Re: Збереження результатів виконанння sql запиту

По-перше, MySQL і SQLite - зовсім різні речі для різних завдань. Не будете ж ви на планшеті MySQL розгортати?
А по-друге, SQLite відстає від MySQL на кількох тестах, якщо вимагати збереження результатів кожної операції на диск. Без цього MySQL відстає.

11

Re: Збереження результатів виконанння sql запиту

Ясно шо для різних,але в цьому випадку і потрібна mysql.

12

Re: Збереження результатів виконанння sql запиту

VTrim написав:

Ясно шо для різних,але в цьому випадку і потрібна mysql.

Як саме ви визначили, що в цьому випадку потрібна MySQL? Які конкретні критерії?

13 Востаннє редагувалося VTrim (17.10.2014 21:38:45)

Re: Збереження результатів виконанння sql запиту

koala написав:
VTrim написав:

Ясно шо для різних,але в цьому випадку і потрібна mysql.

Як саме ви визначили, що в цьому випадку потрібна MySQL? Які конкретні критерії?

З того,що mysql потужніша при select'i  (вибірці)даних (все таки з 40 000 записів) і чим більше записів,тим sqlite помаліше працює, розрахована на простіші задачі. Все це я підтвердити не можу,але якщо почитати..

http://hashcode.ru/questions/149394/php … го-проекта
http://web-answers.ru/questions-and-ans … ili-mysql/
https://toster.ru/q/54444
http://spouk.ru/web/Chto-luchshe-ispolz … ili-sqlite
http://php.ru/forum/viewtopic.php?t=3287
http://www.2828.ru/pro/mysql_vs_sqlite

Хз,завжди потрібно все самому тестувати:).

Подякували: hotHead1

14

Re: Збереження результатів виконанння sql запиту

koala написав:

По-перше, MySQL і SQLite - зовсім різні речі для різних завдань. Не будете ж ви на планшеті MySQL розгортати?
А по-друге, SQLite відстає від MySQL на кількох тестах, якщо вимагати збереження результатів кожної операції на диск. Без цього MySQL відстає.

+1 SQLite це всього лише набір файлів в локальному сховищі, а не сервер. До того ж "тормозить" він через транзакції, які забирають від 50 до 300 мс

15

Re: Збереження результатів виконанння sql запиту

koala написав:
CREATE INDEX lengthof5 ON table( column ) WHERE LENGTH( column ) = 5

чи якось таке, не певен в синтаксисі

не думав, що так можна, навіть не задумувався, велике дякую)

16

Re: Збереження результатів виконанння sql запиту

VTrim написав:
koala написав:
VTrim написав:

Ясно шо для різних,але в цьому випадку і потрібна mysql.

Як саме ви визначили, що в цьому випадку потрібна MySQL? Які конкретні критерії?

З того,що mysql потужніша при select'i  (вибірці)даних (все таки з 40 000 записів) і чим більше записів,тим помаліше працює. sqlite розрахована на простіші задачі. Все це я підтвердити не можу,але якщо почитати..

http://hashcode.ru/questions/149394/php … го-проекта
https://toster.ru/q/54444
http://spouk.ru/web/Chto-luchshe-ispolz … ili-sqlite
http://php.ru/forum/viewtopic.php?t=3287
http://www.2828.ru/pro/mysql_vs_sqlite

Хз,завжди потрібно все самому тестувати:).

дякую за ссилочки, обов'язково перегляну

17

Re: Збереження результатів виконанння sql запиту

koala написав:
CREATE INDEX lengthof5 ON table( column ) WHERE LENGTH( column ) = 5

чи якось таке, не певен в синтаксисі

журбинка, в SqliteBrowser3 отримую ось такий текст помилки, сам Android теж вилітає:
functions prohibited in partial index
(типу не дозволяє користуватись функціями при створенні фільтрованих індексів)

18

Re: Збереження результатів виконанння sql запиту

Шкода. А в мене ще стільки ідей було...

19

Re: Збереження результатів виконанння sql запиту

То може просто запишіть результат в файлик і в подальшому витягуйте інформацію з нього.

20

Re: Збереження результатів виконанння sql запиту

Нащо файлик, якщо є БД? В окрему таблицю можна. Але сумно це.