|
|
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
Добрый день! Подскажите в чем проблема, немогу понять почему казалось бы в двух одинаковых ситуациях идет разная выборка (перебор) При запросе Код: sql 1. Получаем А уже при запросе Код: sql 1. Уже получаем полный перебор таблицы Структура таблицы такая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 13:27 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
treamz, Попробуйте сделать OPTIMIZE TABLE этой таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 13:31 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
Вроде делал и это, все равно не пойму в чем проблема.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 14:12 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
treamzВроде делал и этоПосле этого порог перехода на FULL SCAN сохранился? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 14:21 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
Нет, все осталось также при LIMIT 89 происходит полное сканирование данных в таблице ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 14:32 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
treamz, Покажите вывод команды: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 14:41 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
tmp_table_size 16777216 max_heap_table_size 16777216 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 14:52 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
Explain убеждает, что существует индекс по `datetime`, скриншот - что такого индекса нет. WTF? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 14:56 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
treamz, Объяснить такое поведение пока не могу. Но могу предложить создать индекс по полю datetime. По идее, должно перейти на работу с индексом независимо от величины в LIMIT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 14:56 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
treamzПо сути вот это же тоже не верное отображение выполнения операции? Почему же? что тут неверного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 15:10 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
Да, ошибся. Вы не подскажите каким образом выполняется выборка с LIMIT (но без WHERE). Например последние 200 строк. Я так понимаю простой способ не подойдет, потому-что затронет все записи таблицы? Если какие-то либо "хаки"? Например count(*) и потом SELECT ... WHERE id < $count ... LIMIT 200 ? Заранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 17:09 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
treamzВы не подскажите каким образом выполняется выборка с LIMIT (но без WHERE).Вопрос непонятен. Отсутствие WHERE на LIMIT не влияет. treamzНапример последние 200 строк."Первые" или "последние" записи существуют только при указании сортировки. Без сортировки это будут "какие-то 200 записей". Опишите саму задачу, а не ваши попытки ее решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 17:15 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 17:34 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
Поэтому я и спрашиваю есть ли хаки? Видимо они основаны на JOIN'ах или других операторах, которые используют индексы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 17:38 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
"Хак" нашел, всем спасибо! Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 17:46 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
treamz"Хак" нашел, всем спасибо! Код: sql 1. Хм, и в чем же "хак"? В результате все равно будет неизвестное количество записей, как больше 300, так и меньше 300. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 17:51 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
мне надо выбрать все поля * из таблицы (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 записей, которые мне и нужны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 18:15 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
treamzПри простом запросе SELECT * FROM table LIMIT 300 у меня затрагиваются все 20k записей судя по EXPLAIN. Я же даже ссылку дал... на документацию, между прочим, а не на гороскоп какой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 20:38 |
|
||
|
Запрос ведет себя странно
|
|||
|---|---|---|---|
|
#18+
treamzПри простом запросе SELECT * FROM table LIMIT 300 у меня затрагиваются все 20k записей судя по EXPLAIN.treamz(SELECT id FROM test_table ORDER BY id LIMIT 0, 300) ... затрагиваются только последние 300 записейВы сравниваете неэквивалентные запросы. Запрос с ORDER BY и без - это разные запросы. Это во-первых. А во-вторых, в первую очередь надо обеспечить корректный результат запроса. А вам, есть такое ощущение, вообще все равно что он выводит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 20:45 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=115&tid=1832346]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 224ms |
| total: | 404ms |

| 0 / 0 |
