SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 25.12.2010 22:15:41

Smart
Участник
Зарегистрирован: 25.12.2010
Сообщений: 2

Как уменьшить количество запросов?

Здравствуйте!
Есть таблица artists, которая хранит только id и имя артиста и есть функция на PHP:

function addArtist($getArtist)
{
    // Проверяем есть ли в БД такой артист
    $query = 'SELECT `id` FROM `artists` WHERE `name` = "'.$getArtist.'"';
    $result_artist = mysql_query($query);
    $result_artist_row = mysql_fetch_row($result_artist);
    // Если есть, то берем его id, иначе добавляем
    if ($result_artist_row[0]) { $idArtist = $result_artist_row[0]; }
    else
    {
        $query = 'INSERT INTO `artists` VALUES (NULL, "'.$getArtist.'")';
        $result_artist = mysql_query($query);
       
        $query = 'SELECT `id` FROM `artists` WHERE `name` = "'.$getArtist.'"';
        $result_artist = mysql_query($query);
        $result_artist_row = mysql_fetch_row($result_artist);
        $idArtist = $result_artist_row[0];
    }
    return $idArtist;
}
 

В функцию поступает имя артиста, нужно:
1. проверить есть ли уже такой артист
2. если есть, то просто вернуть его id, если нет, то добавить артиста и вернуть его id

В итоге получилось 3 запроса на функцию. Проблема в том, что таких артистов сотни и все сильно тормозит, можно ли как-то сократить число запросов?

Неактивен

 

#2 26.12.2010 02:57:52

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

Re: Как уменьшить количество запросов?

Получить id только, что добавленной auto_increment  записи можно с помощью php функции mysql_insert_id().

Есть ли у вас индекс на name?

Неактивен

 

#3 26.12.2010 12:08:37

Smart
Участник
Зарегистрирован: 25.12.2010
Сообщений: 2

Re: Как уменьшить количество запросов?

Нет

Неактивен

 

#4 26.12.2010 22:49:56

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

Re: Как уменьшить количество запросов?

Ну так добавьте smile

Неактивен

 

Board footer

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