Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Не получили
письмо с кодом активации
?
1 час
1 день
1 неделя
1 месяц
Навсегда
Новости:
Начало
Помощь
Поиск
Календарь
Вход
Регистрация
Forum Webscript.Ru
»
Программирование
»
Perl
»
Запрос к MySQL - 15 секунд!
« предыдущая тема
следующая тема »
Печать
Страницы: [
1
]
Вниз
Автор
Тема: Запрос к MySQL - 15 секунд! (Прочитано 5246 раз)
0 Пользователей и 1 Гость просматривают эту тему.
Error202
Бесстрашный
Ветеран
Сообщений: 540
+1/-0
2
Запрос к MySQL - 15 секунд!
«
:
02 Февраля 2006, 12:35:44 »
В одной таблице (b) - 5000 записей
В другой (a) - 1500 записей
Почему запрос выполняется 15 секунд?
$sth
=
$dbh
->
prepare
(
qq
{
SELECT a
.
id FROM rw_unrec
as
a
,
rw_rec
as
b WHERE
(
a
.
url
=
b
.
url
) OR (
a
.
email
=
b
.
email
)});
$sth
->
execute
();
while ((
$did
) =
$sth
->
fetchrow_array
())
{
$DubID
{
$did
}=\
'dub\';
};
$sth->finish();
Записан
Космическая игрушка
Меняздесьдавнонет
новичЕк
Глобальный модератор
Ветеран
Сообщений: 5698
+0/-0
2
Запрос к MySQL - 15 секунд!
«
Ответ #1 :
02 Февраля 2006, 12:39:24 »
потому, что 5000х1500=7500000
Записан
Error202
Бесстрашный
Ветеран
Сообщений: 540
+1/-0
2
Запрос к MySQL - 15 секунд!
«
Ответ #2 :
02 Февраля 2006, 12:41:58 »
Чего можно с этим сделать?
Просто задача сравнить урл и емаил в 2-х таблицах, и если вдруг они совпадают, вписать id записи табл.А в хэш...
Записан
Космическая игрушка
AnnA
Фанатка форума
Старожил
Сообщений: 263
+0/-0
2
Запрос к MySQL - 15 секунд!
«
Ответ #3 :
02 Февраля 2006, 12:52:13 »
на мой взгляд - неоправданная конструкция: ($did) = $sth->fetchrow_array()
1. вас интересует всего одно значение - a.id зачем вам array?
2. вы дублируете данные в памяти. следует использовать функцию с *ref
selectrow_hashref например
но, возможно и не получится получить заметное преимущество во времени.
надо пробовать.
Записан
пока-пока.
Error202
Бесстрашный
Ветеран
Сообщений: 540
+1/-0
2
Запрос к MySQL - 15 секунд!
«
Ответ #4 :
02 Февраля 2006, 12:58:55 »
В среднем 12-14 секунд..
Записан
Космическая игрушка
Error202
Бесстрашный
Ветеран
Сообщений: 540
+1/-0
2
Запрос к MySQL - 15 секунд!
«
Ответ #5 :
02 Февраля 2006, 13:29:47 »
Всем спасибо! Обошелся без этого запроса...
Записан
Космическая игрушка
ondr
Модератор
Глобальный модератор
Старожил
Сообщений: 440
+0/-0
0
Запрос к MySQL - 15 секунд!
«
Ответ #6 :
02 Февраля 2006, 13:32:53 »
Error202
читай документацию mysql в разделе "Оптимизация в MySQL" (а лучше и остальные разделы тоже). Расставляй индексы, обрати внимание на типы сверяемых полей, проверяй и корректируй запрос c помощью explain
Записан
0 OK, 0:1
ondr
Модератор
Глобальный модератор
Старожил
Сообщений: 440
+0/-0
0
Запрос к MySQL - 15 секунд!
«
Ответ #7 :
02 Февраля 2006, 13:37:47 »
Error202
в догонку
from prerldoc DBI:
---
When all the data has been fetched from a C
statement, the
driver should automatically call C
for you. So you should
I
normally need to call it explicitly I
when you know
that you\'ve not fetched all the data from a statement handle.
The most common example is when you only want to fetch one row,
but in that case the C
methods are usually better anyway.
Adding calls to C
after each fetch loop is a common mistake,
don\'t do it, it can mask genuine problems like uncaught fetch errors.
Записан
0 OK, 0:1
Печать
Страницы: [
1
]
Вверх
« предыдущая тема
следующая тема »
Forum Webscript.Ru
»
Программирование
»
Perl
»
Запрос к MySQL - 15 секунд!
Sitemap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28