Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Left join проблема... / 25 сообщений из 39, страница 1 из 2
27.10.2014, 19:12:57
    #38788578
psfdek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
Код: sql
1.
The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay


На сайте подсчет отправленных смс, недавно их перевалило за 20 000 и теперь лефт джойн не работает. Как ограничить или исправить???

Код: sql
1.
SELECT count(*) FROM `{$tprefix}sms` JOIN `{$tprefix}clients` ON `{$tprefix}sms`.`client_login` = `{$tprefix}clients`.`client_login` WHERE `{$tprefix}clients`.`office_key` = '{$office_key}' {$filter_sms_q};



Выводит все смс клиентов принадлежащих к одному офису если без COUNT, а со счетчиком оно сначала показывает количество смс общее.

Подскажите пожалуйста как исправить sql запрос что бы он работал с этой большой таблицей...
...
Рейтинг: 0 / 0
28.10.2014, 10:17:32
    #38788960
psfdek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
Up!
...
Рейтинг: 0 / 0
28.10.2014, 10:49:57
    #38789018
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
psfdek,

Тебе для начала нужно привести сам текст запроса, тогда о чём-то можно будет разговаривать.
...
Рейтинг: 0 / 0
28.10.2014, 11:32:32
    #38789085
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
MasterZivнужно привести сам текст запросадополню, а то тут частенько не понимают разницы: текст именно запроса (того, что исполняется на сервере), а не текст шаблона запроса, который тут приведён.
...
Рейтинг: 0 / 0
31.10.2014, 11:10:09
    #38792670
psfdek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
SELECT count(*) FROM `{$tprefix}sms` JOIN `{$tprefix}clients` ON `{$tprefix}sms`.`client_login` = `{$tprefix}clients`.`client_login` WHERE `{$tprefix}clients`.`office_key` = '{$office_key}';



Вот же sql запрос, переменные в нем только префик и значение ключа офиса.... Они могут быть любыми
...
Рейтинг: 0 / 0
31.10.2014, 11:20:23
    #38792687
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
tanglirтекст именно запроса ( того, что исполняется на сервере ), а не текст шаблона запроса, который тут приведёндобавлю - и его explain
...
Рейтинг: 0 / 0
31.10.2014, 11:22:41
    #38792692
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
скорее всего нет ключей, нет индексов, нужен explain
...
Рейтинг: 0 / 0
31.10.2014, 12:18:01
    #38792785
psfdek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
SELECT * FROM `OTo_sms` JOIN `OTo_clients` ON `OTo_sms`.`client_login` = `OTo_clients`.`client_login` WHERE `OEo_clients`.`office_key` = '4e6fdeec6bf2c5724476ad6daec1036a';

Так работает..

Не работает только если COUNT(*) подсчет ввести..
...
Рейтинг: 0 / 0
31.10.2014, 12:19:57
    #38792786
psfdek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
Короче когда делаю подсчет то не работает, а когда просто вывожу на страницу то работает. Мне нужно делать подсчет для пагинатора. До 14000 записей все норм работало, перевалило за 20000 перестало работать.
...
Рейтинг: 0 / 0
31.10.2014, 12:26:23
    #38792793
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
то есть так
Код: sql
1.
2.
3.
4.
SELECT * 
FROM `OTo_sms` 
JOIN `OTo_clients` ON `OTo_sms`.`client_login` = `OTo_clients`.`client_login` 
WHERE `OEo_clients`.`office_key` = '4e6fdeec6bf2c5724476ad6daec1036a'

работает, а так
Код: sql
1.
2.
3.
4.
SELECT count(*)
FROM `OTo_sms` 
JOIN `OTo_clients` ON `OTo_sms`.`client_login` = `OTo_clients`.`client_login` 
WHERE `OEo_clients`.`office_key` = '4e6fdeec6bf2c5724476ad6daec1036a'

нет? чудеса. ну а если попробовать вот так
Код: sql
1.
2.
3.
4.
5.
SELECT count(*) FROM (
 SELECT 1 FROM `OTo_sms` 
 JOIN `OTo_clients` ON `OTo_sms`.`client_login` = `OTo_clients`.`client_login` 
 WHERE `OEo_clients`.`office_key` = '4e6fdeec6bf2c5724476ad6daec1036a'
) t

?
...
Рейтинг: 0 / 0
31.10.2014, 13:50:34
    #38792919
psfdek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
Вот видите работает без count (Лимит автоматом phpmyadmin добавил что бы все не отображать)


Так не работает



Так тоже не пашет
...
Рейтинг: 0 / 0
31.10.2014, 13:53:25
    #38792927
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
psfdekТак тоже не пашетПотому что буковка "t" там была не просто так.
...
Рейтинг: 0 / 0
31.10.2014, 13:57:39
    #38792940
psfdek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
tanglir,


теперь говорит что дублируется имя столбца D:
...
Рейтинг: 0 / 0
31.10.2014, 14:01:22
    #38792948
psfdek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
Хотя ведь указаны таблицы перед столбцами....
...
Рейтинг: 0 / 0
31.10.2014, 14:06:25
    #38792958
psfdek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
И если вместо звездочки пишу 1 как вы написали, то тоже не пашет.
...
Рейтинг: 0 / 0
31.10.2014, 14:11:47
    #38792965
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
psfdek,

А какой у вас сейчас MAX_JOIN_SIZE ?
...
Рейтинг: 0 / 0
31.10.2014, 14:17:22
    #38792970
psfdek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
Я не знаю, на хостинге же. Я думал можно как то оптимизировать этот запрос. А то за 2 месяца 20000 через пол года еще менять придется его... :) Техподдержка мне не поможет.
Придется делать в php наверно, раз mysql не могёт... (Хотя while не справится наверно от такого массива ассоциативного)
Модератор: Пожалуйста, воздерживайтесь от употребления обсценной лексики. Пост поправлен.
...
Рейтинг: 0 / 0
31.10.2014, 14:24:09
    #38792978
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
psfdek,

Код: sql
1.
show variables like '%MAX_JOIN_SIZE%'

Что выдает?
...
Рейтинг: 0 / 0
31.10.2014, 14:28:25
    #38792989
psfdek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...

Вот.
...
Рейтинг: 0 / 0
31.10.2014, 14:33:07
    #38792995
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
Как уже просил tanglir, покажите план запроса, который работает.
...
Рейтинг: 0 / 0
31.10.2014, 14:36:43
    #38793001
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
psfdek

Вот.Значения уменьшены относительно стандартных, но по, по идее, должны быть достаточны.
...
Рейтинг: 0 / 0
31.10.2014, 14:37:22
    #38793003
psfdek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
miksoft,

Чуть выше где три спойлера показан пример где без count работает, а с count нет.
...
Рейтинг: 0 / 0
31.10.2014, 14:39:10
    #38793007
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
psfdek,

explain <запрос который работает>
...
Рейтинг: 0 / 0
31.10.2014, 14:43:15
    #38793010
psfdek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
...
Рейтинг: 0 / 0
31.10.2014, 14:45:28
    #38793015
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Left join проблема...
ну не ключей ни индексов...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Left join проблема... / 25 сообщений из 39, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]