powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос ведет себя странно
21 сообщений из 21, страница 1 из 1
Запрос ведет себя странно
    #39134463
treamz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Подскажите в чем проблема, немогу понять почему казалось бы в двух одинаковых ситуациях идет разная выборка (перебор)

При запросе
Код: sql
1.
EXPLAIN SELECT id FROM malinku_dialog_user ORDER by datetime ASC LIMIT 0, 88


Получаем


А уже при запросе
Код: sql
1.
EXPLAIN SELECT id FROM malinku_dialog_user ORDER by datetime ASC LIMIT 0, 89


Уже получаем полный перебор таблицы


Структура таблицы такая
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134470
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
treamz,

Попробуйте сделать OPTIMIZE TABLE этой таблице.
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134561
treamz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде делал и это, все равно не пойму в чем проблема..
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134579
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
treamzВроде делал и этоПосле этого порог перехода на FULL SCAN сохранился?
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134619
treamz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, все осталось также при LIMIT 89 происходит полное сканирование данных в таблице
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134641
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
treamz,

Покажите вывод команды:
Код: sql
1.
show variables like '%_table_size'
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134667
treamz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tmp_table_size 16777216
max_heap_table_size 16777216
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134676
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Explain убеждает, что существует индекс по `datetime`, скриншот - что такого индекса нет.
WTF?
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134677
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
treamz,

Объяснить такое поведение пока не могу.

Но могу предложить создать индекс по полю datetime. По идее, должно перейти на работу с индексом независимо от величины в LIMIT.
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134682
treamz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По сути вот это же тоже не верное отображение выполнения операции?

...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134700
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
treamzПо сути вот это же тоже не верное отображение выполнения операции?

Почему же? что тут неверного?
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134892
treamz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, ошибся.

Вы не подскажите каким образом выполняется выборка с LIMIT (но без WHERE). Например последние 200 строк. Я так понимаю простой способ не подойдет, потому-что затронет все записи таблицы? Если какие-то либо "хаки"? Например count(*) и потом SELECT ... WHERE id < $count ... LIMIT 200 ?

Заранее благодарен
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134901
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
treamzВы не подскажите каким образом выполняется выборка с LIMIT (но без WHERE).Вопрос непонятен. Отсутствие WHERE на LIMIT не влияет.

treamzНапример последние 200 строк."Первые" или "последние" записи существуют только при указании сортировки. Без сортировки это будут "какие-то 200 записей".

Опишите саму задачу, а не ваши попытки ее решения.
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134912
treamz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я выполняю и получаю

...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134939
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://dev.mysql.com/doc/refman/5.6/en/limit-optimization.html If you select only a few rows with LIMIT, MySQL uses indexes in some cases when normally it would prefer to do a full table scan.
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134950
treamz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поэтому я и спрашиваю есть ли хаки? Видимо они основаны на JOIN'ах или других операторах, которые используют индексы
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134964
treamz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Хак" нашел, всем спасибо!

Код: sql
1.
SELECT * FROM test_table JOIN (SELECT id FROM test_table ORDER BY id LIMIT 0, 300) as b ON b.id = test_table.id
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134969
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
treamz"Хак" нашел, всем спасибо!

Код: sql
1.
SELECT * FROM test_table JOIN (SELECT id FROM test_table ORDER BY id LIMIT 0, 300) as b ON b.id = test_table.id

Хм, и в чем же "хак"?
В результате все равно будет неизвестное количество записей, как больше 300, так и меньше 300.
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39134997
treamz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне надо выбрать все поля * из таблицы (20к записей).

При простом запросе SELECT * FROM table LIMIT 300 у меня затрагиваются все 20k записей судя по EXPLAIN.

При SELECT * FROM test_table JOIN (SELECT id FROM test_table ORDER BY id LIMIT 0, 300) as b ON b.id = test_table.id у меня затрагиваются только последние 300 записей, которые мне и нужны
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39135120
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
treamzПри простом запросе SELECT * FROM table LIMIT 300 у меня затрагиваются все 20k записей судя по EXPLAIN.
Я же даже ссылку дал... на документацию, между прочим, а не на гороскоп какой.
...
Рейтинг: 0 / 0
Запрос ведет себя странно
    #39135126
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
treamzПри простом запросе SELECT * FROM table LIMIT 300 у меня затрагиваются все 20k записей судя по EXPLAIN.treamz(SELECT id FROM test_table ORDER BY id LIMIT 0, 300) ... затрагиваются только последние 300 записейВы сравниваете неэквивалентные запросы. Запрос с ORDER BY и без - это разные запросы. Это во-первых.

А во-вторых, в первую очередь надо обеспечить корректный результат запроса. А вам, есть такое ощущение, вообще все равно что он выводит.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос ведет себя странно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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