본문 바로가기

반응형

프로그래밍/mysql

아직도 select 해보고, 없으면 insert, 있으면 update 하시나요? 보통 db에 값을 변경해야 할때 위 제목과 같은 상황이 많이 발생하는데요. 아주 비효율 적이고, 성능에도 좋지 않습니다. select .... if(count > 0){update ...}else{insert ....} 뭐 대충 이런식으로 개발을 많이 하셨다면 앞으로는 신경 쓰지말고 그냥 insert Query 하나만 실행하시길.... 방법은 이렇게 하시면 됩니다. INSERT … ON DUPLICATE KEY UPDATE ON DUPLICATE KEY UPDATE는 유니크 인덱스 또는 프라이머리 키와중복되는 경우 인서트 대신 업데이트를 수행하게 된다 REPLACE와 다른 점은 이전 값이 유지되는 상태에서 지정된 칼럼의 값만이 변경된다는 것이다 mysql> INSERT INTO CountryCopy (C.. 더보기
MySQL -계층구조, 카테고리, parent-child구조 Managing Hierarchical Data in MySQL By Mike Hillyer Introduction Most users at one time or another have dealt with hierarchical data in a SQL database and no doubt learned that the management of hierarchical data is not what a relational database is intended for. The tables of a relational database are not hierarchical (like XML), but are simply a flat list. Hierarchical data has a parent-child .. 더보기
mysql -replication 오류시 스킵 명령 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; start slave; --slave-skip-errors 라는 옵션이 있는데요. 에러코드값을 지정해 주거나 all로 모든 에러를 무시할 수 있습니다. --slave-skip-errors=[err_code1,err_code2,...|all] 더보기
mysql - 행 열 변환 쿼리 select a.nHsNo, sUserName, max(if(sdtDate_1 = 01, nHour, '')) as day_1, max(if(sdtDate_1 = 02, nHour, '')) as day_2, max(if(sdtDate_1 = 03, nHour, '')) as day_3, max(if(sdtDate_1 = 04, nHour, '')) as day_4, max(if(sdtDate_1 = 05, nHour, '')) as day_5, max(if(sdtDate_1 = 06, nHour, '')) as day_6, max(if(sdtDate_1 = 07, nHour, '')) as day_7, max(if(sdtDate_1 = 08, nHour, '')) as day_8, max(if(sdtD.. 더보기
mysql - 플랜 보는 법 mysql 플랜 보는 법 # 이글은 mysql document 의 7.2.1 Explain Syntax 를 대~충 번역한 것입니다. # 틈틈이 번역하고 있으나 언제 완료될지 모릅니다.. EXPLAIN 을 사용함으로써 인덱스가 적절히 사용되고 있는지 검토할 수 있다. 인덱스가 잘못 사용되고 있다면 ANALYZE TABLE 을 사용하여 테이블을 점검하라. 이것은 테이블의 상태를 갱신하며 옵티마이저의 동작에 영향을 준다. 옵티마이저가 SELECT 에 기록된 순서대로 조인을 행하게 강제하려면 SELECT 대신에 SELECT STRAIGHT_JOIN 을 사용하라. EXPLAIN 은 SELECT 문에 사용된 각 테이블당 하나의 행을 리턴한다. 나열된 순서는 MYSQL 이 쿼리처리에 사용하는 순서대로 출력된다. MY.. 더보기

반응형