![]() |
|
Модераторы: skyboy |
![]()
|
|
| awers |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 1 Всего: 31 |
Добрый вечер.
Суть такая: существует оооогромный запрос, с условиями выборки
если добавляю туда условие `date` > '2007' выбирает вообще непонятно что ...
Помогите подалуйста решить проблемс. Заранее благодарен, Адам. |
||||
|
|||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
все свои or-условия тебе, по всей видимости, надо обрамит скобками
Добавлено @ 23:15 иначе будут выбираться только те строки, где: а) дата больше 2007 и "`to` LIKE '%'"(что, по видимому, означает: "в поле `to` есть хоть какие-то символы") б) выполняются все остальные условия а, как я понимаю, надо так: и дата больше 2007, и поля содержать хоть что-то из перечисленного |
|||
|
||||
| awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 1 Всего: 31 |
вообще мне надо чтоб выбиралось по date в интервале с INT1 по INT2,
phone начиналось с чего угодно кроме 8 за исключением 824,88634 и 0 мож я что-то не так пишу... а HAVING тормозит все жутко просто ... надо выкручиваться с WHERE ... |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
каким боком тут having?
Между нами, подмножество "или 0" входит в подмножетсво "начиналось с чего угодно, кроме 8", потому ставить дополнительное условие не надо. Тем более не надо использовать шаблонные функции поиска(REGEXP, LIKE, RLIKE) там, где можно обойтись обычной "резкой" |
|||
|
||||
| awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 1 Всего: 31 |
MySQL не осилил. После 35 минут 98% загрузки проца - умер. Жаль.
хех... сорри. это оказывается MySQL не осилил 50000 строк. Что делать ведь в переди сотни тысяч? -------- и ещё. наши запросы выполняются на таблице 2800 записей одно и то-же время. 3,7 сек. могу привести запрос полностью, если не страшно Это сообщение отредактировал(а) awers - 4.1.2007, 00:36 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
awers, чем не подошёл? какая версия? дапм таблицы брось. и распиши запрос полностью.
как это - 50000 не осилил? Это сообщение отредактировал(а) skyboy - 4.1.2007, 00:36 |
|||
|
||||
| awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 1 Всего: 31 |
ну, т.с. бойтесь
Прикрепил файлик, вся БД. Самому страшно смотреть, но пока самый простой выход... Это сообщение отредактировал(а) awers - 4.1.2007, 00:39 Присоединённый файл ( Кол-во скачиваний: 2 )
atc.rar 41,42 Kb |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
не страшно. думаю, оптимизатор сам приводит шабонные выражения к нешаблонным. впрочем, если охота полагаться на милось оптимизатора - пожалуйста
попробуй ещё так написать:
если я не перепутал, должно давать тот же результат. и записано короче. но время выполнения..... Добавлено @ 00:41 хм. а подзапросы в качестве полей - это нормально? как в explain - ключи используются? немного нетактичный вопрос - чем такое лучше использования join'ов? быстрее? компактнее? или чего не усмотрел и там логика другая? Добавлено @ 00:42 и зачем вообще - временная таблица? она потом ещё используется? |
|||
|
||||
| awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 1 Всего: 31 |
Ты погляди базу... Може я чего то просто сам промаргал .. в SQL`e не профан..
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
хм
Добавлено @ 00:48 нету у меня дома mysql, чтоб тестировать. нету |
|||
|
||||
| awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 1 Всего: 31 |
Ну мож тогда посоветуеш чего?
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
awers, я не понимаю, что ты выбираешь столь сложным запросом. мало того - я даже не понимаю, что представляет собой твоя база. догадываюсь по названию - что-то связанное с АТС. биллинговая система?
|
|||
|
||||
| awers |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 1 Всего: 31 |
Чем все кончилось ... вот только можно ли ещё как нить упростить конструкцию?? [/code] Добавлено @ 01:29 Да.. биллинг.
думаю наполнение ненужно ... Добавлено @ 01:31 Как полезно иногда читьать мануалы.. ктоб занл ... JOIN )) |
||||||||||
|
|||||||||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
аааа... эээ... REGEXP я привел в пример, чтоб показать, как могут тормозить запрос шаблонные конструкции. неужто работает с приемлимой скоростью?
не совсем понял, что делает запрос не совсем понял, как заложена логика подсчета стоимости. точнее - где? |
|||
|
||||
| awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 1 Всего: 31 |
Добавлено @ 01:59 теперь надо компактно добавить условие `date` к запросам из `statistic` ... а компактно не получается Добавлено @ 02:02 кстати да. в случае с "рег.ехр" время 0,1056 а с (LEFT(`to`,1) <> '8' OR LEFT(`to`,4) = '824' OR LEFT(`to`,5) = '88634') время 0,0373 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |