|
|
|
index hint без индекса
|
|||
|---|---|---|---|
|
#18+
Есть запрос примерно такого вида select t1.f1, t2.f2 from t1, t2 where t1.t0=t2.t0 В таблице t1 записей много, в t2 мало. Уникальные индексы по t0 есть в обеих таблицах, причем для t2 этот индекс единственный. В реальности запрос работает быстро, потому что обращение в t2 идет первым. Хочется добавить уверенности и независимости от причуд оптимизатора. Как зафиксировать такой план выполнения запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 20:23:14 |
|
||
|
index hint без индекса
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 20:25:43 |
|
||
|
index hint без индекса
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 20:32:48 |
|
||
|
index hint без индекса
|
|||
|---|---|---|---|
|
#18+
ilejnЕсть запрос примерно такого вида select t1.f1, t2.f2 from t1, t2 where t1.t0=t2.t0 В таблице t1 записей много, в t2 мало. Уникальные индексы по t0 есть в обеих таблицах, причем для t2 этот индекс единственный. В реальности запрос работает быстро, потому что обращение в t2 идет первым. Хочется добавить уверенности и независимости от причуд оптимизатора. Как зафиксировать такой план выполнения запроса? какой план сейчас? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 20:57:34 |
|
||
|
index hint без индекса
|
|||
|---|---|---|---|
|
#18+
Aleksandr KuzminskyИспользуйте STRAIGHT_JOIN Спасибо. Это оно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 23:17:15 |
|
||
|
index hint без индекса
|
|||
|---|---|---|---|
|
#18+
ilejnAleksandr KuzminskyИспользуйте STRAIGHT_JOIN Спасибо. Это оно.Поменяется статистика, появится возможность более оптимального выполнения запроса, но подпорки не разрешат его задействовать... Оно вам точно надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 23:41:20 |
|
||
|
index hint без индекса
|
|||
|---|---|---|---|
|
#18+
ilejnЕсть запрос примерно такого вида select t1.f1, t2.f2 from t1, t2 where t1.t0=t2.t0 В таблице t1 записей много, в t2 мало. Уникальные индексы по t0 есть в обеих таблицах, причем для t2 этот индекс единственный. В реальности запрос работает быстро, потому что обращение в t2 идет первым. Хочется добавить уверенности и независимости от причуд оптимизатора. Как зафиксировать такой план выполнения запроса? Мне кажется, не стоит дуть на воду, прибереги силы для пожара... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2014, 10:26:46 |
|
||
|
index hint без индекса
|
|||
|---|---|---|---|
|
#18+
[/quot]Поменяется статистика, появится возможность более оптимального выполнения запроса, но подпорки не разрешат его задействовать... [/quot] Кого "его"? Я, видимо, плохо объяснил. Есть большая таблица. В ней, допустим, миллион записей. Есть маленькая таблица. В ней, допустим, сто. Связаны по некоему идентификатору. Уникальные индексы над ним есть в обеих таблицах. Задача - извлечь все записи из большой таблицы, для которых есть записи в маленькой. Все отлично работает, потому что MySQL догадывается сначала слазить в маленькую таблицу, а уже потом доставать записи из большой, используя идентификатор. Мне всего лишь хочется иметь уверенность, что все так и будет продолжаться, и что в один прекрасный момент оптимизатор не решит, что сначала нужно смотреть в большой таблице. Кажется, что STRAIGHT_JOIN - это именно то, что нужно. Нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 12:48:48 |
|
||
|
index hint без индекса
|
|||
|---|---|---|---|
|
#18+
ilejnПоменяется статистика, появится возможность более оптимального выполнения запроса, но подпорки не разрешат его задействовать... [/quot] Кого "его"? Я, видимо, плохо объяснил. Есть большая таблица. В ней, допустим, миллион записей. Есть маленькая таблица. В ней, допустим, сто. Связаны по некоему идентификатору. Уникальные индексы над ним есть в обеих таблицах. Задача - извлечь все записи из большой таблицы, для которых есть записи в маленькой. Все отлично работает, потому что MySQL догадывается сначала слазить в маленькую таблицу, а уже потом доставать записи из большой, используя идентификатор. Мне всего лишь хочется иметь уверенность, что все так и будет продолжаться, и что в один прекрасный момент оптимизатор не решит, что сначала нужно смотреть в большой таблице. Кажется, что STRAIGHT_JOIN - это именно то, что нужно. Нет?[/quot] все так и будет продолжаться пока есть нужная статистика. Зачем хинты?? Ты лучше за статистикой следи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 12:58:39 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38539778&tid=1835315]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 185ms |
| total: | 277ms |

| 0 / 0 |
