Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> REPLACE = ??? в MySQL 
:(
    Опции темы
Wiedzmin
  Дата 9.7.2006, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 17.1.2006

Репутация: нет
Всего: нет



Запрос REPLACE еквивалентен: 
1) DELETE, а потом INSERT 
или 
2) SELECT (проверяем есть ли такая строчка), а потом UPDATE по всем полям
или 
3) Это вообще уникальная команда, выполняет запрос быстрее двух предыдущих )


PM MAIL   Вверх
Mephisto
Дата 10.7.2006, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Цитата(Wiedzmin @  9.7.2006,  09:24 Найти цитируемый пост)
SELECT (проверяем есть ли такая строчка), а потом UPDATE по всем полям

Update ... set ... where...
Чем не устраивает?  Просто дальше разрабатывать алгоритм замены необходимо. А что, есть проблемы с replace? 
PM   Вверх
Wiedzmin
Дата 10.7.2006, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 17.1.2006

Репутация: нет
Всего: нет



Цитата(Mephisto @  10.7.2006,  08:58 Найти цитируемый пост)
Update ... set ... where...

А если строчка еще не вставлена и нечего UPDATE по указанным WHERE. 

Т.е. тут либо 
SELECT ... ; 
if ( есть строки ) UPDATE ...; else INSERT ...;

Либо сразу один REPLACE 
PM MAIL   Вверх
Bikutoru
Дата 10.7.2006, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


Профиль
Группа: Участник
Сообщений: 522
Регистрация: 24.5.2005
Где: Москва

Репутация: 2
Всего: 22



Цитата(Wiedzmin @  10.7.2006,  10:16 Найти цитируемый пост)
А если строчка еще не вставлена и нечего UPDATE по указанным WHERE. 

Т.е. тут либо 
SELECT ... ; 
if ( есть строки ) UPDATE ...; else INSERT ...;

Либо сразу один REPLACE  


Скорее всего REPLACE. Правда, если в таблице есть поле AUTO_INCREMENT, чье значение потом потребуется, то с REPLACE могут возникнуть проблемы - в таком случае лучше использовать 

Цитата(Wiedzmin @  10.7.2006,  10:16 Найти цитируемый пост)
SELECT ... ; 
if ( есть строки ) UPDATE ...; else INSERT ...;

 


--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
Wiedzmin
Дата 10.7.2006, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 17.1.2006

Репутация: нет
Всего: нет



Без автоинкримента ). Уникальный индекс - один.  
PM MAIL   Вверх
Mephisto
Дата 10.7.2006, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Цитата(Wiedzmin @  10.7.2006,  08:16 Найти цитируемый пост)
А если строчка еще не вставлена и нечего UPDATE по указанным WHERE. 

А чем тебе тогда replace поможет?  smile 
Он работает как и update на созданных записях. Разве что в тригере на инсерт может обработать новую.  
PM   Вверх
Wiedzmin
Дата 10.7.2006, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 17.1.2006

Репутация: нет
Всего: нет



Mephisto, не, REPLACE это как раз аналог INSERT, который не выдает ошибку, если попалось уже существующее уникальное значение по какому-то полю, а заменяет 
PM MAIL   Вверх
Bikutoru
Дата 11.7.2006, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


Профиль
Группа: Участник
Сообщений: 522
Регистрация: 24.5.2005
Где: Москва

Репутация: 2
Всего: 22



Цитата(Wiedzmin @  10.7.2006,  19:57 Найти цитируемый пост)
Без автоинкримента ). Уникальный индекс - один.

Тогда делай REPLACE, если тебя не смущает, что в твоем скрипте будет неизвестно, овномлетсяли какая-то запись или вставляется новая
 


--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
Mephisto
Дата 11.7.2006, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Цитата(Wiedzmin @  10.7.2006,  19:35 Найти цитируемый пост)
Mephisto, не, REPLACE это как раз аналог INSERT, который не выдает ошибку, 

Покажи че ты пишешь!  smile  
PM   Вверх
Wiedzmin
Дата 11.7.2006, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 17.1.2006

Репутация: нет
Всего: нет



Цитата(Bikutoru @  11.7.2006,  09:16 Найти цитируемый пост)
Тогда делай REPLACE, если тебя не смущает, что в твоем скрипте будет неизвестно, овномлетсяли какая-то запись или вставляется новая


Просто там разные возможности оптимизации если я знаю, что была запись или не было ее )). Если один РЕПЛЕЙС будет оптимальнее этого всего, то наверно его надо ставить ). Вот я и спрашиваю какие действия внутренне делает МуСКЛ и как можно оценить РЕПЛЕЙС smile)

Цитата(Mephisto @  11.7.2006,  09:24 Найти цитируемый пост)
Покажи че ты пишешь!  smile   

Я пишу отметку топиков прочитанными/непрочитанными для форума, где прочтения хранятся в БД smile). 

Правда сейчас уже над немного другой структурой думаю 
PM MAIL   Вверх
Mephisto
Дата 11.7.2006, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Меня интересует сама строка запроса. Насколько я помню в мускуле replace немного в других целях используеться. 
PM   Вверх
Wiedzmin
Дата 11.7.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 17.1.2006

Репутация: нет
Всего: нет



REPLACE table VALUES (a,b,c,d)

Первичный ключ по полям (a,b,c) 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0887 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.