MySQL

:: DEVELOPER ZONE

Login / Register

  • MySQL.com
  • Developer Zone
  • Partners
  • Online Shop
  • Downloads
  • Documentation
  • Forums
  • Lists
  • Bugs
  • Events
  • User Groups
  • Guilds
  • Blogs
  • Support
  • Resources
  • Books
  • FAQ

Справочное руководство по MySQL 4.0. :: 5 Оптимизация в MySQL :: 5.2 Оптимизация SELECT и других запросов :: 5.2.5 Как MySQL оптимизирует DISTINCT

  • Overview
  • MySQL Reference Manual
  • MaxDB Documentation
  • Connectors

Search the MySQL manual:


  • Справочное руководство по MySQL 4.0.

  • 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 Другие советы по оптимизации

Get the MySQL Language Reference and MySQL Administrator's Guide from MySQL Press!


Additional languages

  • German


Learn about new MySQL releases, technical articles, events and more.

Subscribe to the monthly MySQL Newsletter!


Previous / Next / Up / Table of Contents

5.2.5. Как MySQL оптимизирует DISTINCT

DISTINCT преобразовывается к GROUP BY для всех столбцов, для DISTINCT в сочетании с ORDER BY, помимо этого, во многих случаях также требуется временная таблица.

Если LIMIT # указывается совместно с DISTINCT, MySQL остановится, как только найдет # уникальных строк.

Если не все столбцы и не во всех таблицах используются, MySQL прекратит сканирование неиспользуемых таблиц, как только найдет первое совпадение.

SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;

В случае, если, предположим, таблица t1 используется перед t2 (это проверяется при помощи EXPLAIN), MySQL прекратит чтение в t2 (для каждой отдельной строки из t1), после того как найдет первую строку в t2.


This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

Top / Previous / Next / Up / Table of Contents

© 1995-2005 MySQL AB. All rights reserved.

  • About MySQL
  • Careers
  • Site Map
  • Contact Us
  • Legal
  • Privacy Policy
  • Trademark Info
  • No Software Patents!