|
|
|
Очень долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Есть таблица base1.table1 в таблице около 200 000 записей Key1 - ключевое поле INTEGER AUTOINCREMENT Key2 - INTEGER подстановка из другой таблицы много повторяющихся значений Number - VARCHAR произвольные повторяющиеся значения в том числе и имеющие значение '0' Index1 - Key1 Index2 - Key2 Index3 - Number ------------------------ Key1 | Key2 | Number | ------------------------ 1 | 2 | 1a5b | 2 | 4 | 89er | ... ... ... 189456| 2 | 0 | Нужно выбрать значения Key2 где Number = '0' но только те значения, где количество всех значений в поле Number больше 1 (вместе с нулевыми значениями). Например Key2 = 2 имеет значение Number = '1a5b' и '0' и поэтому подпадает под критерий. SELECT t.Key2, Count(t.Key1) FROM base1.table1 t WHERE t.Key2 IN (SELECT Key2 FROM base1.table1 t WHERE t.Number = '0') GROUP BY t.Key2 HAVING Count(t.Key1) > 1 Сервер Linux Fedora Core 2 mysql-5.0.2-alpha-nightly-20040926 Проц на линухе загружен на 100% процессом mysqld. Запрос выполняется за 15 минут. Простые запросы выполняет быстро. Где грабель??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2004, 12:07 |
|
||
|
Очень долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Грабель, очевидно, в индексе на варчар. У меня (правда - на третьем мускуле) - тоже была похожая трабла - пришлось варчары переделать в чары - тогда индекс нормально стал работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2004, 12:41 |
|
||
|
Очень долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
покажи explain ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2004, 18:53 |
|
||
|
Очень долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Запустил EXPLAIN. Он показал, что основной запрос не использует индексы. Применил команду FORCE INDEX. Время выполнения запроса упало с 15 минут до 3 минут. Но это всё равно много. Куда можно ещё копнуть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2004, 10:28 |
|
||
|
Очень долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
А такой запрос разве не тоже самое делает? Код: plaintext 1. 2. 3. 4. Тогда попробуй создать ключик Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2004, 12:56 |
|
||
|
Очень долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
ApeЗапустил EXPLAIN. Он показал, что основной запрос не использует индексы. Применил команду FORCE INDEX. Время выполнения запроса упало с 15 минут до 3 минут. Но это всё равно много. Куда можно ещё копнуть? PII 350, 128M; W2K Pro SP4; MySQL 5.0.0a 2 мин 50 сек без форсов Тока я бы сделал так: Код: plaintext 1. 2. 3. 4. Результат: 1.59 сек! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2004, 15:21 |
|
||
|
Очень долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Олег Олегович Тока я бы сделал так: Код: plaintext 1. 2. 3. 4. Результат: 1.59 сек! Интересное решение. Надо попробовать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2004, 15:39 |
|
||
|
Очень долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Спасибо! Получилось!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2004, 15:46 |
|
||
|
Очень долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
ApeСпасибо! Получилось!!! Кажись, " перему дриваем":) Как уже справедливо заметил Александр Прокопюк , похоже, запрос Код: plaintext 1. 2. 3. 4. делает то же самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2004, 16:24 |
|
||
|
Очень долго выполняется запрос
|
|||
|---|---|---|---|
|
#18+
Олег Олегович Кажись, " перему дриваем":) Как уже справедливо заметил Александр Прокопюк , похоже, запрос Код: plaintext 1. 2. 3. 4. делает то же самое. Этот запрос ничего не возвращает. А должно быть 6864 записи. И этот запрос не может ничего выдать, потому как значений Key2 имеющих количество значений Number = '0' болше одного просто не существует. Короче говоря этот запрос находится за рамками условия задачи. А вот запрос с логическим отображением таблицы и связыванием - работает. Красивое решение. Выполняется на моей технике мгновенно. И всётаки в пятом мускуле остались грабли с операторами Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2004, 10:37 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=32720294&tid=1854763]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 451ms |

| 0 / 0 |
