# Главная
# О библиотеке

# Выбор дистрибутива
преимущества Linux/UNIX | основные дистрибутивы | серверный Linux | BSD | LiveCDs | прочее

# Установка и удаление программ
общие вопросы | каталоги софта | специальные случаи

# Настройка и работа
установка, загрузчики | настройка Linux | консоль | файловые системы | процессы | шеллы, русификация, коммандеры | виртуальные машины, эмуляторы

# X Window и оконные менеджеры
настройка X Window | GNOME | KDE | IceWM и др.

# Работа с текстами
редакторы | офис | шрифты, кодировки и русификация | преобразования текстовых файлов | LaTeX, SGML и др. | словари

# Графика
GIMP | фото | обработка изображений | форматы графических файлов

# Сети, администрирование
общие вопросы | Dialup & PPP | брандмауэры | маршрутизация | работа в Windows-сетях | веб-серверы | Apache | прокси-серверы | сетевая печать | прочее

# Программирование
GCC & GNU make | программирование в UNIX | графические библиотеки | Tcl | Perl | PHP | Java & C# | СУБД | CVS | прочее

# Ядро
# Мультимедиа
# Интернет
# Почта
# Безопасность
# Железо
# Разное

# Linux HowTo (как сделать)
# Книги и руководства
# Материалы на английском языке


MySQL The World's Most Popular Open Source Database # Online shop | Site map |  
CompanyProductsSupport & ConsultingTraining & CertificationDownloadsDocumentation
  BooksArticlesMailing ListsPresentationsOther Sites  
Search the MySQL manual:
MySQL Manual
  • 5 Оптимизация в MySQL
    • 5.2 Оптимизация SELECT и других запросов
      • 5.2.1 Синтаксис оператора EXPLAIN (получение информации о SELECT)
      • 5.2.2 Оценка производительности запроса
      • 5.2.3 Скорость выполнения запросов SELECT
      • 5.2.4 Как MySQL оптимизирует выражения WHERE
      • 5.2.5 Как MySQL оптимизирует DISTINCT
      • 5.2.6 Как MySQL оптимизирует LEFT JOIN и RIGHT JOIN
      • 5.2.7 Как MySQL оптимизирует ORDER BY
      • 5.2.8 Как MySQL оптимизирует LIMIT
      • 5.2.9 Скорость выполнения запросов INSERT
      • 5.2.10 Скорость выполнения запросов UPDATE
      • 5.2.11 Скорость выполнения запросов DELETE
      • 5.2.12 Другие советы по оптимизации

Buy this Reference Manual in softcover from Barnes & Noble!

MySQL Reference Manual
Previous / Next / Up / Table of Contents

5.2.8 Как MySQL оптимизирует LIMIT

В некоторых случаях, когда используется LIMIT # и не используется HAVING, MySQL будет выполнять запрос несколько иначе:

  • Если при помощи LIMIT выбираются только несколько строк, MySQL будет использовать индексы в тех некоторых случаях, когда он обычно предпочел бы делать полное сканирование таблицы.
  • Если LIMIT # используется с ORDER BY, MySQL закончит сортировку, как только найдет первые # строк, вместо того, чтобы сортировать всю таблицу.
  • При сочетании LIMIT # с DISTINCT MySQL остановится, как только найдет # уникальных строк.
  • В некоторых случаях группировка GROUP BY может быть выполнена путем упорядоченного считывания ключа (или путем выполнения сортировки по ключу) и последующего вычисления итогового результата пока не изменится значение ключа. В этом случае LIMIT # не будет вычислять какие-либо ненужные предложения GROUP BY.
  • После того как MySQL пошлет первые # строк клиенту, он прервет выполнение запроса (если не используется SQL_CALC_FOUND_ROWS).
  • LIMIT 0 всегда будет быстро возвращать пустую выборку. Эта команда полезна для проверки запроса и получения типов столбцов результата.
  • Если сервер для выполнения запроса использует временные таблицы, LIMIT # применяется для вычисления того, сколько для них потребуется места.

User Comments

Posted by Bill Bozeman on Wednesday December 18 2002, @5:27pm[Delete] [Edit]

Here is an example of how to use Limit:

The first example will limit the result to the first 10 items.
<font color="blue">SELECT name FROM customers LIMIT 10</font>

This example will limit the result to 10 rows, starting with row 5.
<font color="blue">SELECT name FROM customers LIMIT 5 , 10</font>

If you only use one parameter, it will be the number of rows to return, if you use two
parameters, it will be where to start, and then the number to return.

Bill

Posted by [name withheld] on Wednesday December 18 2002, @5:27pm[Delete] [Edit]

I'm not going to hazard a guess at what exactly
is going on internally, but this

LIMIT 10, -1

will return the 11th record through end of table
(indexing starts at 0).

Add your own comment.

Top / Previous / Next / Up / Table of Contents
# MySQL.com home | Site map | Contact us | Press | Jobs | Privacy policy | Trademark info | © 1995-2003 MySQL AB. All rights reserved.