Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Не получили
письмо с кодом активации
?
1 час
1 день
1 неделя
1 месяц
Навсегда
Новости:
Начало
Помощь
Поиск
Календарь
Вход
Регистрация
Forum Webscript.Ru
»
Программирование
»
Perl
»
Запрос к MySQL - 15 секунд!
« предыдущая тема
следующая тема »
Печать
Страницы: [
1
]
Вниз
Автор
Тема: Запрос к MySQL - 15 секунд! (Прочитано 5247 раз)
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, thedriver should automatically call C for you. So you shouldI normally need to call it explicitly I when you knowthat 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 SMF 2.0.19 | SMF © 2016, Simple Machines XHTML RSS Мобильная версия Страница сгенерирована за 0.219 секунд. Запросов: 22.