Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
большой поток данных из mysql
|
|||
|---|---|---|---|
|
#18+
Всем привет. имеется таблица: booker event totals under overbooker1 CSKA vs Spartak 1.5 6.5 1.08booker1 CSKA vs Spartak 2.5 3.2 1.28booker1 CSKA vs Spartak 3.5 2 1.7booker1 CSKA vs Spartak 4.5 1.48 2.45booker1 CSKA vs Spartak 5.5 1.2 3.8booker1 CSKA vs Spartak 6.5 1.08 6booker2 CSKA vs Spartak 1.5 5.5 2.08booker2 CSKA vs Spartak 2.5 4.2 3.28booker2 CSKA vs Spartak 3.5 2 5.7booker2 CSKA vs Spartak 4.5 2.48 4.45booker2 CSKA vs Spartak 5.5 4.2 2.8booker2 CSKA vs Spartak 6.5 3.08 3 Учитывая, что: - событий много - тоталов много - на каждый тотал каждого события разные букмекеры дают свои коэффициенты. - могут быть события, на чей тотал коэффициент дает только одby букмекер. Задача такая. Мне нужно вывести из таблицы данные, группируя по booker,event,totals игнорируя те тоталы, на которые кф дает только один букмекер. Делаю так: Код: sql 1. 2. 3. 4. 5. получаем названия событий по условиям задачи. Теперь мне нужно получить сами коэффициенты на эти тоталы группируя по букмекерам. Вот тут и возникает взрыв. Первый запрос выдает резельтат - почти 4 тысячи событий. Второй запрос, выдает почти 10тысяч строк. И это не предел, т.к. событий будет в разы больше. Второй запрос выглядит так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Но когда я вспоминаю о том, что помимо запроса в базу, мне еще нужно в php несколько раз прогнать этот массив по несколько раз, я понимаю почему у меня сервер записает каждый раз. Помогите кто-нибудь оптимизировать запрос или может поправить структуру таблицы. не предлагайте разбивать на несколько таблиц - этот вариант не рассматриваем. часть дампа прикрепляю. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2014, 19:19 |
|
||
|
большой поток данных из mysql
|
|||
|---|---|---|---|
|
#18+
если тебе правда нужно 4 тыщи строчек в одной таблице, значит надо что то менять в кончерватроии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2014, 19:28 |
|
||
|
большой поток данных из mysql
|
|||
|---|---|---|---|
|
#18+
ScareCrow, Прошу прощения, но я ничего не понял из того, что вы написали. вы можете подсказать что-то по сути вопроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2014, 11:50 |
|
||
|
большой поток данных из mysql
|
|||
|---|---|---|---|
|
#18+
Артем_sqlScareCrow, Прошу прощения, но я ничего не понял из того, что вы написали. вы можете подсказать что-то по сути вопроса? обясняю.. гугл выдаёт результаты по 10 не для понта, а потому что никто не будет перечитывать список в 50 елементов. зачем выводить 4000 строк сразу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2014, 13:11 |
|
||
|
большой поток данных из mysql
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, объясняю.. сначала я вывожу события, у которых есть тотал, на который кф дают более 1 букмекера. Далее я провожу другие расчеты из выведенных результатов и ЕСЛИ что-то подходит под мои условия расчетов, то я их вывожу. Я не могу в запросе вставить limit потому что, если я буду выводить с лимитом, то из выведенных данных может ни одна не окажется нужной. после получения результатов запроса, я создаю такой массив: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. Если нарисовать это в таблице, то получается так: Код: sql 1. 2. 3. 4. 5. Далее мне надо дважды прокрутить этот массив в цикле, чтобы перемножить так: 10.5*0.99 = ? 10.5*1.03 = ? 12*1.5 = ? 12*1.03 = ? 11*1.5 = ? 11*0.99 = ? И уже если какое-то из этих произведений больше нужной цифре, например 10, тогда записываю данные в массив такой: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Вопрос: Можно ли в select сделать все эти расчеты? чтобы сначала выводилось не всё, а потом с помощью php отсекались ненужные, а выводилось сразу уже нужные event, например? А точнее: 1. выбрать события, у которых кф на тотал дают хотя бы два букмекера. 2. перемножить их между собой, как я писал выше 3. и если произведение выше например 10, вывести те записи, которые были задействованы пнри умножении, в нашем случае чтобы результат запроса был такой: Код: sql 1. 2. функции и процедуры допускаются. что угодно, лишь бы работало быстро ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2014, 15:47 |
|
||
|
большой поток данных из mysql
|
|||
|---|---|---|---|
|
#18+
Артем_sqlМожно ли в select сделать все эти расчеты?Думаю, вполне можно. Во всяком случае, в мускуле кроме простейшей арифметики есть довольно много всяких функций и операторов , включая хранимые процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2014, 16:00 |
|
||
|
большой поток данных из mysql
|
|||
|---|---|---|---|
|
#18+
vkle, многосодержательный ответ. Спасибо. Я знаю, что в мускуле много всякого интересного. Что решит мой вопрос, так это в цикле дважды прогнать результат запроса, который выведет мне все нужные записи. Возможно это в мускуле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2014, 16:08 |
|
||
|
большой поток данных из mysql
|
|||
|---|---|---|---|
|
#18+
Никто не подскажет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 10:57 |
|
||
|
большой поток данных из mysql
|
|||
|---|---|---|---|
|
#18+
Артем_sqlНикто не подскажет? невчитывался детально в расписаную логику, что за муть ты делаешь с результатом в цикле...но как пример Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Кручу-Верчу-ЗапутатьХочу Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 19:05 |
|
||
|
большой поток данных из mysql
|
|||
|---|---|---|---|
|
#18+
Напишу запрос, если увижу постановку задачи ввида ИСПОЛЬЗУЕМЫЕ таблицы table1(f1,f2,f3...перечисление всех полей) другие таблицы. без долгого эпоса, написать получить список вида table1.f2, table1.f3, calcf1 ....перечислить все поля результата описываем вычисляемые calcf1 = table1.f2*table2.f5+ЕСЛИ(если tablefdate сегодняшняя, то table1.f3 иначе table2.f4) ну и логику отбора 1)field1.fdate в диапазоне +- 5 дней от сегодняшнего.... .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 19:10 |
|
||
|
большой поток данных из mysql
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, ок, попробую коротко и ясно написать. Есть таблица, дамп я прислал выше. Код: sql 1. 2. 3. 4. Запросом я должен выбрать сначала все матчи, на которые есть коэфф минимум от двух букмекеров. Перемножить par1 из одной записи на par2 из другой записи. И если произведение больше 10, то вывожу те записи, которые попали под мои условия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 11:09 |
|
||
|
большой поток данных из mysql
|
|||
|---|---|---|---|
|
#18+
Выбираю из таблицы те записи, на которые кф дает более одного букмекера так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Далее перемножаю все в php и отлично работает. Но это если мало данных. А если данных много, то 504. Поэтому ищу возможность в mysql не только отбирать, но и перемножать и выводить только те записи, которые мне подходят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 11:13 |
|
||
|
большой поток данных из mysql
|
|||
|---|---|---|---|
|
#18+
Артем_sqlВыбираю из таблицы те записи, на которые кф дает более одного букмекера так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Далее перемножаю все в php и отлично работает. Но это если мало данных. А если данных много, то 504. Поэтому ищу возможность в mysql не только отбирать, но и перемножать и выводить только те записи, которые мне подходят. 1 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. зачем последний гроупбай? типо уникальные найти? допустим гдето у нас есть три записи - каунт равен 3 в внутренем запросе. что на что мы умножаем и сравнивая с 10? а если 100 букмекеров дали свои данные на один матч? я так понял, перемножаем все возможные пары. тогда надо ити путём from t1 left join t2 on (t1.action=t2.action and t1.totals = t2.totals and t1.booker<>t2.booker) where t2.booker IS NOT NULL теперь селект select t1.under*t2.over,t1.action,t1.booker,t1.under,t2.booker,t2.booker where ... and t1.under*t2.over > 10 но у нас будут дубли а имено на каждую пару две записи по типу петя вася и вася петя...если это тоже надо разруливать, тогда вместо t1.booker<>t2.booker ---------t1.booker<t2.booker тоесть если образовалась пара петя вася, то наоборот пара не орбазуеться. ты писал Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. и получил результат ввиде 10,395 Stan Wawrinka - Marin Cilic betclic 10.5 brkings 0.99 .... и все такие строчки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 16:54 |
|
||
|
|

start [/forum/topic.php?fid=23&gotonew=1&tid=1462247]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 380ms |

| 0 / 0 |
