레이블이 MYSQL인 게시물을 표시합니다. 모든 게시물 표시
레이블이 MYSQL인 게시물을 표시합니다. 모든 게시물 표시

2020년 11월 17일 화요일

Mysql Explain 다시 생각하기

 회사 꼬맹이 한테  explain 해보라고 하고선,

정작 나는 다 까먹었다.


http://www.24w.jp/blog/?p=250

 type 에 index라고 되어있으면 index 테이블을 풀스캔하고 있는거라 느린거라고함.

key_len이 생각한대로 수치가 나오는지(int는 4바이트) 호가인


쿼리 뒤에 \G 를 넣어서 세로로 출력


그리고 팁으로

MySQL 성능 죽이는 17가지 방법

https://denodo1.tistory.com/310?category=357842

에서 "- 타입 컬럼에 index 써있는거랑 Extra 컬럼에 index 써있는거랑 “매우 큰” 차이 있음" 가 위에 type 에 대한 말임.

정규화는 필수. 그냥 막 테이블에 새칼럼 쑤셔넣는짓은 하지마.

정규화화 더불어 쿼리 캐시를 위해서 해야할일이

* 자주 변하는 것과 변하지 않는 것을 쪼개는게 중요하다 이 말임.


2018년 5월 22일 화요일

Mysql 프로시져 만들어서 대량 인서트 한방에

delimiter //
 create procedure loop_insert_resume0(in x int)
 begin
   declare max_id int;
   declare i int;
   set i = 0;
   select max(id) into max_id from  `TABLE`;
   while i < x do
     set i = i + 1;
     insert into `TABLE`  (`FIELD1`, `FIELD2`, `id`)
  select `FIELD1`, `FIELD2`, (max_id+i)  from  `TABLE` where  `resume_id` = max_id;
   end while;
 end
//

call loop_insert_resume0(50000);

2018년 5월 7일 월요일

MYSQL 행복제..귀찮...

https://stackoverflow.com/questions/11331573/mysql-copy-row-but-with-new-id/11331672
템포 테이블만들고, 키삭제하고 그걸다시 넣고, 다시 삭제하고...귀찮..
CREATE TEMPORARY TABLE tmp SELECT * from my_table WHERE ...;
ALTER TABLE tmp drop pk_id; # drop autoincrement field
# UPDATE tmp SET ...; # just needed to change other unique keys
INSERT INTO my_table SELECT 0,tmp.* FROM tmp;
DROP TEMPORARY TABLE tmp;