솔직히 replace 가 함수 인지도 잘 몰라요
이것이 어떤 식으로 쓰이는 것인지 예좀 들어 주실수 잇으시면 부탁좀 드릴게요!!
특정 데이터의 값을 바꿀려고 할때, 보통 데이터가 이미 있으면 UPDATE 를 사용하고 없다면 INSERT 를 하겠죠.
그런데 REPLACE 라는 경우는 위의 경우를 좀 사용자의 입장에서 편하게 하기 위해서 일단 데이터를 DELETE 하고 그 다음에 INSERT 를 해줍니다.
그래서 REPLACE 의 사용법은 INSERT 와 똑 같습니다.
당장 사용하기에는 편할지 몰라도.. 나중에 테이블에 레코드가 엄청나게 많아진 상태에서 남용하게 되면.. 속도가 무쟈게 느려지는 경우가 많이 생깁니다.
당연한 이야기 겠지만.. 하나의 레코드가 없어지고 다시 집어 넣고 하는 과정중에 인덱스도 갱신되어야 하고 하는데.. 인덱스 값 하고는 전혀 관계 없는 다른 필드들의 데이터 몇개를 업데이트 하는데 REPLACE 를 사용하게 되면 쓸데없는 낭비가 너무 심해 지겠죠..
저도 처음에는 걍 편하니깐 저렇게 사용하다가.. 나중에 실제 서비스 할때 문제에 부딪히고 나서.. 프로그램을 수정해서 UPDATE 를 사용하는 것으로 바꾸었습니다. (물론 처음에 데이터가 없다면 INSERT 를 해야겠죠..)
그때 플랫폼은 FreeBSD + gcc2.96.x + MySQL 3.23.x 였었는데..
지금은 MySQL 버전이 4. 대로 올라서구 해서.. 얼마나 바뀌었는지 전혀 모르지만 (지금은 windows + VC + MSSQL 로 작업하는지라..), 그때의 제 기억으로는 비추였던 기능이었습니다. 당장 쓰기엔 편해도 말이죠..