Вопрос

У меня есть большая таблица в базе данных MySQL (6 миллионов записей). Если я свяжу таблицу, я могу открыть его просто отлично-похоже, что доступ к записям при необходимости запрашивает записи. Однако, если я использую проходной запрос, кажется, что доступ к всем таблице запрашивает всю таблицу. Это достаточно медленно в моих обычных таблицах (200 000), но большие невозможно. Я хочу использовать проход, чтобы иметь возможность использовать операторы SQL, но мне нужно сделать его быстрее. Есть ли способ сделать это? Спасибо!

РЕДАКТИРОВАТЬ:Вот запрос; Вы не можете стать намного проще этого.SELECT * FROM Traffic12

Это было полезно?

Решение

Ваш запрос запрашивает весь стол. Доступ делает именно то, что вы говорите. Единственное время для использования прохожного запроса-это когда вы хотите, чтобы пункт «Где» (фильтрация) выполнялась на сервере или соединения, которые будут выполнены на сервере или когда вы используете преимущества функциональности на стороне сервера (например, как UDF) или когда вы хотите добавить «намек», чтобы понять сервер.

Очевидная выгода, которую вы замечаете, когда не используете запрос PT, получает доступ только определенного количества строк за раз; Но вы обходите эту оптимизацию из алгоритма пейджинга при использовании Pass-Thru.

Когда фильтрация выполняется на стороне сервера, запрос на передачу проходов может быть гораздо более экономным с пропускной способностью, чем не PT, и поэтому может привести к большим результатам производительности по сравнению с без пассажиров. Или иногда заднее время-огромная машина с 4-корпусами с огромным количеством оперативной памяти и может возобновить большие индексы. Вы должны оценить ситуацию, чтобы увидеть, какой подход лучше учитывать все факторы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top