ТОП-10 популярных


НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...


Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...

Internet2, или cтарые песни о новом
Когда-то на заре Интернета, тогдаеще военно-научной сетиAPRAnet, были заложены основныепринципы функционирования«Сети сетей». В их числе — использованиепротокола, называемого сейчасIPv4. В...

Все о MySQL. Использование подзапросов


28-12-2009

MySQL 4.1 позволяет вкладывать одни запросы в другие, используя результирующий набор внутреннего запроса внешним запросом. Как результат, вместо выполнения двоих (или более) отдельных запросов, вы выполняете один запрос, содержащий один (или более) подзапросов.
Рассмотрим следующий пример, в котором используется вложенный подзапрос для получения перечня всех счетов, остаток которых превышает средний остаток на всех счетах.
Использование подзапросов
Здесь MySQL начинает обрабатывать внутренний запрос и сначала определяет из записей таблицы средний остаток на всех счетах. Затем он переходит на внешний для вложенного запроса уровень и замещает полученным результирующим набором вложенного запроса представленное в предложении WHERE выражение. Это сделано для того, чтобы получить список обладателей счетов, остаток на которых больше среднего.
О подзапросах подробнее можно узнать в главе 11, "Подзапросы".
Управление поведением оператора select
Для управления поведением оператора SELECT предназначено несколько ключевых слов.
■ Ключевое слово DISTINCT исключает из результирующего набора записи, содержащие повторяющиеся значения.
■ Ключевое слово SQL_CALC_FOUND_ROWS сообщает MySQL о необходимости подсчитать общее количество строк, соответствующих запросу (не принимая во внимание значение LIMIT, которое может быть установлено). Это общее количество можно получить с помощью функции FOUND_ROWS () .
■ Ключевые слова SQL_CACHE и SQL_NO_CACHE сообщают MySQL о необходимости кэшировать полученные результирующие наборы.
■ Ключевое слово SQL_BUFFER_RESULT приводит к сохранению результирующих наборов во временной таблице. Применение такого буфера устраняет необходимость блокировать на время передачи результатов клиенту таблицы, используемые запросом, обеспечивая тем самым беспрепятственное использование их другими процессами.
■ Ключевые слова SQL_BIG_RESULT и SQL_SMALL_RESULT используются для того, чтобы показать ожидаемый размер результирующего набора, позволяя тем самым определить наиболее оптимальный способ сортировки и хранения возвращенных записей (соответственно, на диске или во временных таблицах, которые хранятся в оперативной памяти).
■ Ключевое слово SQL_HIGH_PRIORITY поднимает приоритет запроса наряду с другими параллельно выполняющимися операторами UPDATE, INSERT или DELETE, приводя тем самым к более быстрому (но ненамного) выполнению запросов на сильно загруженных серверах баз данных. 

На той же странице
Ключевое слово SQL_CALC_FOUND_ROWS может пригодиться в приложениях, которые выводят содержимое таблиц базы данных на нескольких страницах (или экранах). Оно позволяет осуществлять подсчет общего числа найденных записей, даже если полученный результат будет содержать только малое подмножество этого общего числа.
Если, например, вы хотите отобразить на экране только пять записей из таблицы account, и при этом вы хотите вывести общее число записей, ваш запрос должен выглядеть следующим образом:
mysql> SELECT SQL_CALC_FOUND_ROWS accountName FROM account LIMIT 5;
Использование подзапросов
Этот метод возвращает не только подмножество из пяти записей, но также подсчитывает общее число записей, выбранных запросом, которое можно получить с помощью функции FOUND_ROWS ().
Секрет скорости
Правильное использование ключевых слов SQL_CACHE, SQL_BUFFER_RESULT, SQL_BIG_RESULT, SQL_SMALL_RESULT и SQL_HIGH_PRIORITY поможет вам суще­ственно повысить скорость транзакций с сервером MySQL.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
Все о MySQL. Группировка результатов выборки Все о MySQL. Копирование, импорт и экспорт записей