41

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

Regen написав:

потрібно рандомно вибрати 1 запис, довжина якого 5 символів(ну тобто поля)

Що називається "шах і мат"!

Не простіше набрати в пошуковій машині "random sqlite" і знайти рішення?

42 Востаннє редагувалося Regen (25.10.2014 16:55:56)

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

ktretyak написав:
Regen написав:

потрібно рандомно вибрати 1 запис, довжина якого 5 символів(ну тобто поля)

Що називається "шах і мат"!

Не простіше набрати в пошуковій машині "random sqlite" і знайти рішення?

на 1 сторінці є моє повідомлення, де я написав аналогічний запит(тобто з RANDOM() і LIMIT), але він виконується від 780 до 1200 мс, що надто багато

43 Востаннє редагувалося Regen (25.10.2014 16:59:06)

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

koala написав:

До речі, а якщо

CREATE VIEW lengthof5 AS 
  SELECT column 
  FROM table 
  WHERE LENGTH(column)=5;

- вид може кешуватися, що дасть потрібну швидкість без негативних сторін (хоча сильно не певен, треба перевіряти).

використав відображення- в результаті швидкість збільшилась майже на 200 мс в порівнянні з остаднім варіантом
626 проти 807 і 394 проти 461
велике дякую за ідею)

44

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

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

До речі, а якщо

CREATE VIEW lengthof5 AS 
  SELECT column 
  FROM table 
  WHERE LENGTH(column)=5;

- вид може кешуватися, що дасть потрібну швидкість без негативних сторін (хоча сильно не певен, треба перевіряти).

використав відображення- в результаті швидкість збільшилась майже на 200 мс в порівнянні з остаднім варіантом
626 проти 807 і 394 проти 598
велике дякую за ідею)

Цю ідею доречно використовувати, якщо у вас складний запит на 300 рядків, а ви хочете спростити його до select * from table. В противному разі ніякого виграшу не буде. Дуже сумніваюсь що ви цих 200 мс отримуєте саме через використання вьюхи, адже різниця між вьюхою і простим запитом лише в тому, що код вьюхи зберігається в базі даних. І все, більше відмінностей, в даному випадку, немає.

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

45

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

Regen написав:
ktretyak написав:
Regen написав:

потрібно рандомно вибрати 1 запис, довжина якого 5 символів(ну тобто поля)

Що називається "шах і мат"!

Не простіше набрати в пошуковій машині "random sqlite" і знайти рішення?

на 1 сторінці є моє повідомлення, де я написав аналогічний запит(тобто з RANDOM() і LIMIT), але він виконується від 780 до 1200 мс, що надто багато

Вам явно зарано бавитись з Java і Android, почніть хоча б з PHP...

46

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

ktretyak написав:
Regen написав:

потрібно рандомно вибрати 1 запис, довжина якого 5 символів(ну тобто поля)

Що називається "шах і мат"!

Не простіше набрати в пошуковій машині "random sqlite" і знайти рішення?

Він, власне, так і робить, гляньте вище.
Чи ви про те рішення, що набрало 1 голос? Ви точно певні?

47

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

ktretyak написав:

Вам явно зарано бавитись з Java і Android, почніть хоча б з PHP...

Не треба так. Java — це не Хаскель який-небудь, там на початку немає нічого складного. Вся Америка починає з Джави і нічого.

48

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

koala написав:
ktretyak написав:
Regen написав:

потрібно рандомно вибрати 1 запис, довжина якого 5 символів(ну тобто поля)

Що називається "шах і мат"!

Не простіше набрати в пошуковій машині "random sqlite" і знайти рішення?

Він, власне, так і робить, гляньте вище.
Чи ви про те рішення, що набрало 1 голос? Ви точно певні?

Так, це я випустив з уваги, але він це робив ще до того, як зробив окреме поле і проіндексував його.

49

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

quez написав:
ktretyak написав:

Вам явно зарано бавитись з Java і Android, почніть хоча б з PHP...

Не треба так. Java — це не Хаскель який-небудь, там на початку немає нічого складного. Вся Америка починає з Джави і нічого.

Можливо ви праві, я це сказав тільки виходячи з того, що говорять інші, які вже мають досвід в різних мовах програмування. Те що я читав, то вони кругом говорять, що PHP це найпростіше, що вони знають.

50

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

ktretyak написав:
quez написав:
ktretyak написав:

Вам явно зарано бавитись з Java і Android, почніть хоча б з PHP...

Не треба так. Java — це не Хаскель який-небудь, там на початку немає нічого складного. Вся Америка починає з Джави і нічого.

Можливо ви праві, я це сказав тільки виходячи з того, що говорять інші, які вже мають досвід в різних мовах програмування. Те що я читав, то вони кругом говорять, що PHP це найпростіше, що вони знають.

Простота оманлива. Брейнфак — найпростіша мова, про яку я знаю, немає ніяких проблем освоїти його за п’ятнадцять хвилин. Але ніхто не радить починати з нього.

51

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

quez написав:
ktretyak написав:
quez написав:

Не треба так. Java — це не Хаскель який-небудь, там на початку немає нічого складного. Вся Америка починає з Джави і нічого.

Можливо ви праві, я це сказав тільки виходячи з того, що говорять інші, які вже мають досвід в різних мовах програмування. Те що я читав, то вони кругом говорять, що PHP це найпростіше, що вони знають.

Простота оманлива. Брейнфак — найпростіша мова, про яку я знаю, немає ніяких проблем освоїти його за п’ятнадцять хвилин. Але ніхто не радить починати з нього.

недавно читав про нього)

52

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

ktretyak написав:
Regen написав:
ktretyak написав:

Що називається "шах і мат"!

Не простіше набрати в пошуковій машині "random sqlite" і знайти рішення?

на 1 сторінці є моє повідомлення, де я написав аналогічний запит(тобто з RANDOM() і LIMIT), але він виконується від 780 до 1200 мс, що надто багато

Вам явно зарано бавитись з Java і Android, почніть хоча б з PHP...

якщо ви уже так пишете- то будьте такі добрі аргументуйте

53

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

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

Що називається "шах і мат"!

Не простіше набрати в пошуковій машині "random sqlite" і знайти рішення?

Він, власне, так і робить, гляньте вище.
Чи ви про те рішення, що набрало 1 голос? Ви точно певні?

Так, це я випустив з уваги, але він це робив ще до того, як зробив окреме поле і проіндексував його.

так я і зараз це роблю)

54

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

Regen написав:

якщо ви уже так пишете- то будьте такі добрі аргументуйте

Якщо ви пишете такий код, який із 40 тисяч  вибирає 4 тисяч рядків, заганяєте їх у пам'ять телефона, і це все зроблено щоб потім вибрати один випадковий рядок, то це явно показує почерк дуже зеленого розробника (не ображайтесь, бо це правда)...

55

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

ktretyak написав:
Regen написав:

якщо ви уже так пишете- то будьте такі добрі аргументуйте

Якщо ви пишете такий код, який із 40 тисяч  вибирає 4 тисяч рядків, заганяєте їх у пам'ять телефона, і це все зроблено щоб потім вибрати один випадковий рядок, то це явно показує почерк дуже зеленого розробника (не ображайтесь, бо це правда)...

та я і не сперечатимусь, що я не зелений)
тому звертаюсь до вас за порадою, що б ви зробили у такому випадку?

56

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

Regen написав:
ktretyak написав:
Regen написав:

якщо ви уже так пишете- то будьте такі добрі аргументуйте

Якщо ви пишете такий код, який із 40 тисяч  вибирає 4 тисяч рядків, заганяєте їх у пам'ять телефона, і це все зроблено щоб потім вибрати один випадковий рядок, то це явно показує почерк дуже зеленого розробника (не ображайтесь, бо це правда)...

та я і не сперечатимусь, що я не зелений)
тому звертаюсь до вас за порадою, що б ви зробили у такому випадку?

Я б отримав пораду, що мені рано ще цим займатись, і, можливо, дослухався б до неї.

57 Востаннє редагувалося ailkiv (28.10.2014 16:11:47)

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

Regen, не знаю всіх нюансів роботи sqlLite, але даний розв'язок має допомогти

1. Створюєте окрему таблицю або view із primary key ID автоінкрементне
2. Запит SELECT count(*) FROM назва_нової_таблиці (у MySQL він кешується і працює практично мементально), якщо ні тоді десь собі у табличці налаштувань збережіть або на крайній випадок у файлик)

Отже після цих двох кроків ви матимете таблицю у якій всі значення пронумеровані від 1 до N (ID), а також знатимете N

3. Якщо ви пишете на java (працював ніколи з java) берете функцію випадкового числа на проміжку від 1 до N, і отримуєте X
4. І тепер робите SELECT column FROM назва_нової_таблиці WHERE ID = X (вибірка по primary key теж можна вважати моментальна)

------
Зверніть увагу що у таблиці назва_нової_таблиці треба буде слідкувати за цілісністю інтервалу 1-N (при операціях видалення)

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

58 Востаннє редагувалося Regen (29.10.2014 12:46:32)

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

ну з таблицею тут усе ясно, щоправда на відміну від view її треба буде вручну оновлювати і вона буде тупо дублювати дані, журбинка(

а от з додаванням стовпця до view проблеми:

  • не можливо додати неіснуючий- тобто він має базуватись на якомусь, котрий уже є в таблиці

натрапив на ось таке, вроді, працює, але все ж це не автоінкрементний стовпець(
http://stackoverflow.com/questions/1243 … -in-sqlite
+ "You can not add a primary key constraint to views"
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=66480
виходить треба юзати таблицю

59 Востаннє редагувалося ktretyak (29.10.2014 12:47:46)

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

У випадку з SQLite (як із більшістю СУБД, де не створюються матеріалізовані вьюхи), вьюха відрізняється від простого запиту тільки тим, що її код зберігається в базі даних. Я ж вам казав про це, чи ви вирішили потратити ще пару днів часу, щоб все таки переконатись в цьому?

Якщо б ви прийняли це до уваги, то зрозуміло що вам би не хотілось додавати "автоінкрементний стовпець" до тексту запиту, а також "вручну оновлювати вьюху"...

60

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

ktretyak написав:

У випадку з SQLite (як із більшістю СУБД, де не створюються матерізовані вьюхи), вьюха відрізняється від простого запиту тільки тим, що її код зберігається в базі даних. Я ж вам казав про це, чи ви вирішили потратити ще пару днів часу, щоб все таки переконатись в цьому?

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

було таке) і про запит у 300 рядків казали, де вона дає ефективність)