powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Кто тормозит?
15 сообщений из 15, страница 1 из 1
Кто тормозит?
    #32073031
Artfil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посоветуйте где крутить!!!!!!!!!!!!
есть 2 больших таблицы t1=18 млн. записей и t2=12 млн. Есть общее поле fff. При выполнении запроса из t1 с подтягиванием полей из t2 например
select count(*) from t1 left join t2 on t1.fff=t2.fff where date>.....

Так вот если результатом запроса будет количество записей до 10 то запрос выполняется быстро, около 15 сек, а если количество записей приближается к 100, то запрос выполняется
7000 сек, а если количество около 1000000, то 19000 сек.
Почему такая нелинейная зависимость? Сервер 3.23.52 под linux
512 Мб озу 2 проца.
...
Рейтинг: 0 / 0
Кто тормозит?
    #32073136
demiurg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
индексы на t1.fff , t2.fff и date стоят ?

ps ты 5 часов ждал выполнения запроса ? :)
...
Рейтинг: 0 / 0
Кто тормозит?
    #32073141
Artfil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все индексы есть иначе бы на любом запросе тормозило.

Нет пять часов не ждал на ночь запускал, но вообще меня эти эксперименты уже достали - на построение индека часа два по одному полю уходит.
...
Рейтинг: 0 / 0
Кто тормозит?
    #32073142
demiurg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можешь показать explain запроса ?
...
Рейтинг: 0 / 0
Кто тормозит?
    #32073155
Artfil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю как из Fronta его перетащить. Наверное сейчас не успею, только завтра с утра
...
Рейтинг: 0 / 0
Кто тормозит?
    #32073253
Artfil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не нашел можно ли HTML корректно вставить в форум поэтому кидаю explain
для выборки которая выполняется 10 сек
---------- резать здесь ------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>SQL-query</title>
<meta name="GENERATOR" content="MySQL-Front 2.4">
<style type="text/css"><!--
.header {background-color: #D4D0C8;}
th {vertical-align: top;}
td {vertical-align: top; background-color: #FFFFFF;}
//--></style>
</head>

<body>

<h3>SQL-query (2 Records)</h3>

<table border=1>
<tr class="header">
<th>table</th>
<th>type</th>
<th>possible_keys</th>
<th>key</th>
<th>key_len</th>
<th>ref</th>
<th>rows</th>
<th>Extra</th>
</tr>
<tr>
<td>do </td>
<td>range </td>
<td>g33 </td>
<td>g33 </td>
<td>11 </td>
<td>NULL </td>
<td>503 </td>
<td>where used </td>
</tr>
<tr>
<td>de </td>
<td>ref </td>
<td>NewIndex </td>
<td>NewIndex </td>
<td>23 </td>
<td>do.nd </td>
<td>2 </td>
<td>where used </td>
</tr>
</table>

<br><br>
<i>generated 11/28/2002 9:31:12 AM by <a href="http://www.mysqlfront.de/">MySQL-Front 2.4</a></i>

</body></html>

---------------конец--------------------------------

do - таблица t1
de - таблица t2
nd - общее поле

для выборки в 7000 сек величина rows для первой таблица </body></html>
...
Рейтинг: 0 / 0
Кто тормозит?
    #32073637
demiurg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
g33 - это ключ на date?
Долго работает запрос, если делать выборку только из одной таблицы с условием по date ?

ps такого вида было бы более, чем достаточно.
table type possible_keys key key_len ref rows Extra
do range g33 g33 11 NULL 503 where used
de ref NewIndex NewIndex 23 do.nd 2 where used
...
Рейтинг: 0 / 0
Кто тормозит?
    #32073781
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думал хоть что-то понимаю в MySQL, а оказывается я нифига не понимаю...
...
Рейтинг: 0 / 0
Кто тормозит?
    #32073801
Artfil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
g33 это ключ по полю char, но по нему из одной таблицы поиск идет быстро, проблема начинается когда связываю две таблицы. Причем провел эксперимент - урезал исходные таблицы до 500000 записей - запрос стал выполняться 1мин.
...
Рейтинг: 0 / 0
Кто тормозит?
    #32074007
demiurg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что то у тебя явно не используется какой то индекс.
>g33 это ключ по полю char
где это поле в запросе ?

покажи show create table для обоих таблиц сам запрос. А то что-то я совсем запутался.
...
Рейтинг: 0 / 0
Кто тормозит?
    #32074092
Artfil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извини я начал с отвлеченного запроса
select count(*) from t1 left join t2 on t1.fff=t2.fff where date> , а explain писал уже для реального. Реальный запрос такой:
select count(*) from do left join de on de.nd=do.nd where de.gd1>'2002-01-01' and de.g011='ИМ' and do1.g33 like '39%'
индексы для de.nd ,do.nd, g011 и g33 построены и по отдельности из одной таблицы все быстро вытаскивает. Перефразируя мой первоначальный вопрос, спрашиваю:
приспособлен ли MYSQL для работы с большими(> 10млн.записей) таблиц с помощью оператора join
...
Рейтинг: 0 / 0
Кто тормозит?
    #32074117
demiurg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а длина у индексов g011 и g33 какая ?
И еще, почему на gd1 нет индекса ?

ps Если хочется побыстрее решить, вот моя аська 48133035
...
Рейтинг: 0 / 0
Кто тормозит?
    #32074136
Artfil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
индекс по gd1 есть, просто я забыл про это написать.
g011 char 2, g33 char 10.
Аську могу поставить, но отвлекает от работы она.
...
Рейтинг: 0 / 0
Кто тормозит?
    #32074156
demiurg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а запросы
select count(*) from do where do1.g33 like '39%'
и
select count(*) from de where de.gd1>'2002-01-01' and de.g011='ИМ'
быстро работают и много записей получается ?


>Аську могу поставить, но отвлекает от работы она.
это смотря как её использовать :)
...
Рейтинг: 0 / 0
Кто тормозит?
    #32074181
Artfil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select count(*) from do where do1.g33 like '39%' 800000 - 1.84 Сек
select count(*) from de where de.gd1>'2002-01-01' and de.g011='ИМ' - 798000 - 607 сек может здесь собака порылась, но
select count(*) from de where de.g011='ИМ' - 7.8 млн - сек
select count(*) from de where de.gd1>'2002-01-01' - 1.5 млн -2.25 сек
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Кто тормозит?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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