Вверх ↑
Этот топик читают: Гость
Ответов: 1528
Рейтинг: 57
#31: 2013-09-12 11:01:33 ЛС | профиль | цитата
Tad, эх, это всё конечно здорово, но "поздно пить боржоми..".
уже с десяток функций и алгоритмов на этом варианте завязано.
дешевле фильтровать по месяцам, а дальше добивать математическим аппаратом
карма: 0

0
Ответов: 758
Рейтинг: 112
#32: 2013-09-12 13:27:24 ЛС | профиль | цитата
Chipset писал(а):
А вот hitman249 писал(а)
либо больше текущей даты

Я пока решения не увидел, да и сам не смог решить.

20 и больше число
Для варианта
"7,20,17,3" => "0010001000000000100100000000000"
#sql
SELECT * FROM rules_month WHERE length(trim(substr(month_days,20),"0"))>1
Для варианта
"7,20,17,3" => 589892
#sql
SELECT * FROM rules_month WHERE month_days >= (1<<(20-1))

hitman249 писал(а):
а что можно понять в 10000111010001 или 98654?
А зачем тебе понимать. Это просто данные которые хранятся в БД. А как ты их потом отобразишь так и будет
карма: 1

0
Ответов: 1061
Рейтинг: 22
#33: 2013-09-12 13:48:04 ЛС | профиль | цитата
hitman249 писал(а):
эх, это всё конечно здорово, но "поздно пить боржоми..".
уже с десяток функций и алгоритмов на этом варианте завязано.

Ну, можешь перед нужным запросом конвертировать это поле, допустим в виртуальную таблицу, и уже от него отталкиваться, не?
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#34: 2013-09-12 14:03:25 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-10 23:05:16
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#35: 2013-09-12 14:39:02 ЛС | профиль | цитата
Выше я.
------------ Дoбавленo в 14.39:
RinniX писал(а):
можешь перед нужным запросом конвертировать это поле, допустим в виртуальную таблицу, и уже от него отталкиваться, не?
пальчиком покажи, как "инвертировать" и как "отталкиваться".
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1061
Рейтинг: 22
#36: 2013-09-12 15:10:19 ЛС | профиль | цитата
Tad писал(а):
пальчиком покажи, как "инвертировать" и как "отталкиваться".

Да можно в конце концов, сделать один запрос, и обрабатывать это поле и строку в самой программе и там же её если надо конвертировать для удобства во что хочешь, а можно просто разбить эту строку с разделителем "," и там уже искать нужные числа, или не вариант?! )
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#37: 2013-09-12 16:50:45 ЛС | профиль | цитата
RinniX, в таблице 804 000 записей. (есть у меня такая для работы и использую её для тестов тоже)
Если задать SELECT * FROM table WHERE условие; то вся таблица обрабатывается за 9-10 сек.
Попробовал применить то, что ты предлагаешь: "обрабатывать это поле и строку в самой программе" - время выполнения 4 МИНУТЫ !
Разницу чувствуешь ?
Да с такими темпами - 15 запросов в час - оператор сойдет с ума.


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1061
Рейтинг: 22
#38: 2013-09-12 17:02:06 ЛС | профиль | цитата
Tad, Смотря какая таблица! В данном случае, лучше применить обработку через программу, т.к. запрос будет уже идти по году и месяцу, согласись, только это уже сокращает количество записей во много раз, + он ещё их отсортирует в том-же запросе по числу "Текущая дата", что сократит ещё на половину, условно, и что в итоге? Нетрудно догадаться, что количество строк будет достаточно мало для обработки программой! )
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#39: 2013-09-12 17:10:26 ЛС | профиль | цитата
RinniX, не занимайся болтологией - где у него "Текущая дата" ?
Tad писал(а):
пальчиком покажи

Какой запрос обсуждаем:
Вывести все записи у которых есть 2.
Все, а не за месяц и год.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1061
Рейтинг: 22
#40: 2013-09-12 17:20:24 ЛС | профиль | цитата
hitman249 писал(а):
Исходные данные: "Текущая дата".

Смотри первый пост!
------------ Дoбавленo в 17.20:
Думаю что программа может достаточно быстро обработать запрос и без включения в условие "Текущая дата".
карма: 0

0
Ответов: 1528
Рейтинг: 57
#41: 2013-09-12 17:31:30 ЛС | профиль | цитата
Tad,
Tad писал(а):
в таблице 804 000 записей

добавлю от себя. вот поэтому я и не хочу плодить тысячи строк.

если брать расклад на каждый чих 1 запись, то чтобы записать всего одну строку мне потребуется
30-31 в месяце, 1 дата, 7 в неделе, 24 в часах, 6 в минутах, 1 важность, 1 позиция, 1 режим, 1 head запись

итого: 73 строк на запоминание 1 записи, сейчас 9.
(или к примеру 804000/73=11014)

карма: 0

0
Ответов: 16884
Рейтинг: 1239
#42: 2013-09-12 17:35:51 ЛС | профиль | цитата
hitman249 писал(а):
Исходные данные: "Текущая дата".
Требуется выдать значения которые равны текущей дате либо больше текущей даты.

Извини, не обратил внимание.

------------ Дoбавленo в 17.35:
hitman249 писал(а):
сейчас 8.
и большой гемморой с её обработкой
А создал бы таблицу так, как предложили выше и нет геммороя.
hitman249 писал(а):
но "поздно пить боржоми..".

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1528
Рейтинг: 57
#43: 2013-09-12 17:40:07 ЛС | профиль | цитата
Tad, всё на пользу
где-то убавилось, где-то прибавилось.
всё не предусмотришь, но выгрузку по 40 минут из-за N миллионов строк как в 1С, я видеть не хочу
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#44: 2013-09-12 19:16:25 ЛС | профиль | цитата
hitman249 писал(а):
всё не предусмотришь
Это если сразу включать комп. Без детального продумывания задачи.
------------ Дoбавленo в 19.16:
hitman249 писал(а):
если брать расклад на каждый чих 1 запись, то чтобы записать всего одну строку мне потребуется
30-31 в месяце, 1 дата, 7 в неделе, 24 в часах, 6 в минутах, 1 важность, 1 позиция, 1 режим, 1 head запись
Если не рассказывать сказки про часы, минуты и т.д и т.п., то при структуре таблицы id integer primary key,object_id integer,Data Real максимум 31 строка в месяц или 366 в году(высокосном) на один объект. И будут там и часы и минуты и даже секунды с мсек.
Сколько у тебя объектов - незнаю. Сам умножь 366 на число объектов, получишь число записей в БД за год.
И запрос простейший
SELECT * FROM rules_month WHERE date(Data)>= date('now');
и никакой головной боли.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 186
Рейтинг: 9
#45: 2013-09-12 20:11:59 ЛС | профиль | цитата
Tad писал(а):
таблице 804 000 записей

Проверь мою конструкцию на своей таблице. Очень интересно какая скорость получится.

Я думаю это костыль

code_31808.txt
карма: 0

1
файлы: 1code_31808.txt [3.4KB] [209]
Голосовали:hitman249
Сообщение
...
Прикрепленные файлы
(файлы не залиты)