Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблемы с запросом
|
|||
|---|---|---|---|
|
#18+
Всем доброе время суток. При запуске запроса: Код: sql 1. 2. 3. 4. получаю ошибку: /* SQL Ошибка (126): Incorrect key file for table '/dev/shm/#sql_3f33_0.MYI'; try to repair it */ Если убрать "ORDER BY c.pos, id asc" - то все нормально. По ходу проблема в том, что упираюсь в лимит размера файла на сервере. Вопрос: можно ли как-то перестроить выборку, чтоб в результате получать нужный набор данных. Увеличить лимит нет возможности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 16:01 |
|
||
|
Проблемы с запросом
|
|||
|---|---|---|---|
|
#18+
Может места на диске не хватает.. Или таблица повредилась -> https://dev.mysql.com/doc/refman/5.7/en/repair-table.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2017, 08:36 |
|
||
|
Проблемы с запросом
|
|||
|---|---|---|---|
|
#18+
Уточнял у администраторов, то сказали, что максимальный пакет 1 Мб. Тоесть при моем варианте g.cat_id (int) этого хватит для около 100000 айдишек категорий, а в запрос по категориями выбирается 138000, что и вызывает проблему при "ORDER BY", поскольку мускул пытается запихнуть все в указанный ранее файл, размер которого становится больше 1 Мб. Увеличить лимит администраторы отказываются, а как раздробить запрос на серию более мелких, чтоб в результате можно было получить такой-же набор данных не могу придумать. Пробовал сначала выбрать первым запросом айдишки категорий, сформировать строку и во втором запросе через c.id IN (...) выполнить выборку материалов, но получается очень длинная строка и мускул ругается "Got a packet bigger than 'max_allowed_packet' bytes". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 12:54 |
|
||
|
Проблемы с запросом
|
|||
|---|---|---|---|
|
#18+
Igor ChubenkoПробовал сначала выбрать первым запросом айдишки категорий, сформировать строку и во втором запросе через c.id IN (...) выполнить выборку материалов, но получается очень длинная строка и мускул ругается "Got a packet bigger than 'max_allowed_packet' bytes". Igor Chubenko Код: sql 1. ? при выборе ПЕРВЫХ 100 записей из списка ид - получается слишком длинная строка ? можно: 1) разбить на порции и тянуть порциями. например 1000 ид обычно хватает на IN запрос 2) сделать сортировку на клиенте :) не рационально, но видимо время в вашем случае не критично :) можно пойти путем денормализации. удаленным категориям ставите флаг - потом проставляйте флаг и товарам, в спец поле, которое их запретит к показу. тогда при выборке будет одна таблица. если ид у вас числовые - то вроде бы должно хорошо под этот запрос и сортироваться и ключик можно построить а с ключем и выборка быстрее (если ключ не будет в 6 раз тяжелее самой таблицы :) ) и сортировка проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2017, 13:24 |
|
||
|
Проблемы с запросом
|
|||
|---|---|---|---|
|
#18+
Длинная строка получается, если все ID категорий собрать в одну строку и потом ее подставить в запрос в WHERE-части, заменив этим "INNER JOIN". Вариант сортировки на клиенте или "спец поля, которое их запретит к показу" - потребует модификации системы во многих местах, поэтому сначала хочу выяснить все возможные варианты на уровне базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2017, 13:09 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39493254&tid=1830524]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 363ms |

| 0 / 0 |
