Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / index hint без индекса / 11 сообщений из 11, страница 1 из 1
27.01.2014, 20:23:14
    #38539671
ilejn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
index hint без индекса
Есть запрос примерно такого вида
select t1.f1, t2.f2 from t1, t2 where t1.t0=t2.t0

В таблице t1 записей много, в t2 мало.
Уникальные индексы по t0 есть в обеих таблицах, причем для t2 этот индекс единственный.

В реальности запрос работает быстро, потому что обращение в t2 идет первым. Хочется добавить уверенности и независимости от причуд оптимизатора. Как зафиксировать такой план выполнения запроса?
...
Рейтинг: 0 / 0
27.01.2014, 20:25:43
    #38539673
ilejn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
index hint без индекса
ilejnЕсть запрос примерно такого вида
select t1.f1, t2.f2 from t1, t2 where t1.t0=t2.t0

В таблице t1 записей много, в t2 мало.
Уникальные индексы по t0 есть в обеих таблицах, причем для t2 этот индекс единственный.

В реальности запрос работает быстро, потому что обращение в t2 идет первым. Хочется добавить уверенности и независимости от причуд оптимизатора. Как зафиксировать такой план выполнения запроса?

Пардон, перепутал паре мест "t" и "f" ;)

select t1.f1, t2.f2 from t1, t2 where t1.f0=t2.f0

Уникальные индексы по f0.
...
Рейтинг: 0 / 0
27.01.2014, 20:32:48
    #38539676
Aleksandr Kuzminsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
index hint без индекса
ilejnЕсть запрос примерно такого вида
select t1.f1, t2.f2 from t1, t2 where t1.t0=t2.t0

В таблице t1 записей много, в t2 мало.
Уникальные индексы по t0 есть в обеих таблицах, причем для t2 этот индекс единственный.

В реальности запрос работает быстро, потому что обращение в t2 идет первым. Хочется добавить уверенности и независимости от причуд оптимизатора. Как зафиксировать такой план выполнения запроса?


Используйте STRAIGHT_JOIN , тогда MySQL будет объединять таблицы в таком порядке, как они перечислены.
Т.е.

Код: sql
1.
2.
3.
4.
5.
select t1.f1, t2.f2 
from t2 
STRAIGHT_JOIN t1 ON t1.t0=t2.t0
 
where ....
...
Рейтинг: 0 / 0
27.01.2014, 20:33:18
    #38539678
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
index hint без индекса
ilejn ,

почитайте про селективность индекса , что ли...
...
Рейтинг: 0 / 0
27.01.2014, 20:57:34
    #38539699
Ivan Durak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
index hint без индекса
ilejnЕсть запрос примерно такого вида
select t1.f1, t2.f2 from t1, t2 where t1.t0=t2.t0

В таблице t1 записей много, в t2 мало.
Уникальные индексы по t0 есть в обеих таблицах, причем для t2 этот индекс единственный.

В реальности запрос работает быстро, потому что обращение в t2 идет первым. Хочется добавить уверенности и независимости от причуд оптимизатора. Как зафиксировать такой план выполнения запроса?
какой план сейчас?
...
Рейтинг: 0 / 0
27.01.2014, 23:17:15
    #38539763
ilejn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
index hint без индекса
Aleksandr KuzminskyИспользуйте STRAIGHT_JOIN


Спасибо.
Это оно.
...
Рейтинг: 0 / 0
27.01.2014, 23:41:20
    #38539778
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
index hint без индекса
ilejnAleksandr KuzminskyИспользуйте STRAIGHT_JOIN


Спасибо.
Это оно.Поменяется статистика, появится возможность более оптимального выполнения запроса, но подпорки не разрешат его задействовать... Оно вам точно надо?
...
Рейтинг: 0 / 0
28.01.2014, 10:26:46
    #38540081
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
index hint без индекса
ilejnЕсть запрос примерно такого вида
select t1.f1, t2.f2 from t1, t2 where t1.t0=t2.t0

В таблице t1 записей много, в t2 мало.
Уникальные индексы по t0 есть в обеих таблицах, причем для t2 этот индекс единственный.

В реальности запрос работает быстро, потому что обращение в t2 идет первым. Хочется добавить уверенности и независимости от причуд оптимизатора. Как зафиксировать такой план выполнения запроса?

Мне кажется, не стоит дуть на воду, прибереги силы для пожара...
...
Рейтинг: 0 / 0
30.01.2014, 12:48:48
    #38543427
ilejn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
index hint без индекса
[/quot]Поменяется статистика, появится возможность более оптимального выполнения запроса, но подпорки не разрешат его задействовать... [/quot]

Кого "его"?

Я, видимо, плохо объяснил.

Есть большая таблица. В ней, допустим, миллион записей.
Есть маленькая таблица. В ней, допустим, сто.
Связаны по некоему идентификатору. Уникальные индексы над ним есть в обеих таблицах.
Задача - извлечь все записи из большой таблицы, для которых есть записи в маленькой.
Все отлично работает, потому что MySQL догадывается сначала слазить в маленькую таблицу, а уже потом доставать записи из большой, используя идентификатор.

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

Кажется, что STRAIGHT_JOIN - это именно то, что нужно.
Нет?
...
Рейтинг: 0 / 0
30.01.2014, 12:58:39
    #38543456
Ivan Durak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
index hint без индекса
ilejnПоменяется статистика, появится возможность более оптимального выполнения запроса, но подпорки не разрешат его задействовать... [/quot]

Кого "его"?

Я, видимо, плохо объяснил.

Есть большая таблица. В ней, допустим, миллион записей.
Есть маленькая таблица. В ней, допустим, сто.
Связаны по некоему идентификатору. Уникальные индексы над ним есть в обеих таблицах.
Задача - извлечь все записи из большой таблицы, для которых есть записи в маленькой.
Все отлично работает, потому что MySQL догадывается сначала слазить в маленькую таблицу, а уже потом доставать записи из большой, используя идентификатор.

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

Кажется, что STRAIGHT_JOIN - это именно то, что нужно.
Нет?[/quot]
все так и будет продолжаться пока есть нужная статистика. Зачем хинты??
Ты лучше за статистикой следи.
...
Рейтинг: 0 / 0
30.01.2014, 13:28:57
    #38543547
ilejn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
index hint без индекса
Ivan DurakЗачем хинты??
Ты лучше за статистикой следи.

Хинты для того, чтобы не следить за статистикой ;)

Специфика продукта.
OLTP, да еще и функционирующий без присмотра DBA.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / index hint без индекса / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]