SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.09.2009 16:16:24

Xplod
Участник
Зарегистрирован: 14.09.2009
Сообщений: 1

Подскажите оптимальный запрос c минимальной нагрузкой на MySQL

Здравствуйте!

Есть таблица ticket:

Код:

id -> int(10)
date_time -> datetime    
message -> text     
url -> varchar(255)

Есть задача: имея массив значений проверить есть ли такое значение в базе, если такого значения нет то присваиваем это значение переменной. Моя реализация данной задачи: 

Код:

$link = array('http://www.ya.ru', 'http://www.google.ru', 'http://www.yahoo.com', 'http://www.rambler.ru'); //значений в реале намного больше

foreach($link as $value){
    
    if(!$db->query("SELECT * FROM ticket WHERE url='".$value."' LIMIT 1")){
        
        $url = $value;
        break;    
    }
}

if(!isset($url)) echo('Совпадений не найдено');

Данный пример работоспособный НО не очень эффективный, так как при большом объеме значение массива и слабом сервере постоянно выскакивает ошибка:

Код:

MySQL Error!
------------------------

The Error returned was:
MySQL server has gone away

Error Number:
2006

SELECT * FROM ticket WHERE url='http://www.site.ru' LIMIT 1

Подскажите возможно ли решить эту задачу одним запросом возможно условным каким нибудь, или же натолкните меня на более эффективный алгоритм.

Спасибо!

Отредактированно Xplod (14.09.2009 16:30:56)

Неактивен

 

#2 14.09.2009 20:26:53

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Подскажите оптимальный запрос c минимальной нагрузкой на MySQL

1. А есть ли у вам индекс на url?

2. Зачем вам * в запросе? Вас не нужны данные. Напишите SELECT url FROM ...  это позволит серверу не обращаться к файлу с данными, а читать только файл с индексом.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson