sql

[SQL 실무 팁] mysql 문법 이것만 기억하자(2)

주니코니 2023. 7. 13. 16:41

인덱스

대용량 데이터 있어 인덱스는 몹시 중요하다⭐⭐

(자세히 알고싶다면 고급개념 튜닝 공부 추천)

 

특징은 테이블의 열마다 인덱스를 만들 수 있다

but

단점이 있다면 인덱스명을 만들어줘야 한다는 건데...

많이 만들수록 분량이 늘어난다

so

상황을 판단하고, 업무에 실제 쓰일 열들만 만들기

 

TIP primary / unique key 는 자동으로 인덱스 생성됨 

insert into 할 필요 없다

 


이게 무슨 소리~?

1.delimiter // 란? procedure에서 관례처럼 써줘야하는...식..=_= 


2.call userProc(); select * from member_tbl; 왜 멤버는 조회가 안되는지?

-> 두 시트로 나옴

 

3.아래 sumproc 식 이해가 안가

delimiter $$ 
create procedure sumProc ()
begin
	declare i int; #정수형 변수 i  선언 ex 1,2,3,,,, 
	declare hap int ; #정수형 i의 합계 저장 용도로 hap 선언  
	set hap =0; #hap 변수를 1로 초기화

	set i= 1; #1부터 
	while ( i <= 100) do #100까지 참인 동안 반복
		if ( (i % 2) =0) then #2 배수 합
			set hap = hap +i; #hap 변수에 i 값을 더한다. 짝수인 i 값들 누적하여 합계 
		end if ; # if문의 종료를 나타냄(짝수가 아니면 아무것도 안하고)
		set i = i+ 1; #변수 1씩 증가. 다음 반복을 위해 i 값 업데이트 
	end while; #while 문의 종료를 나타냄 
    select hap;
end $$
delimiter ;member_tbl

 


실습

-- employess DB 에서 적당한 테이블을 4개열 복사해서.
-- 인덱스를 2곳 열에 만들기
-- 뷰도 2개 만들기 

select last_name from index_tbl;
select * from uv_index; -- 뷰에 접근을 하면 last_name만 볼 수 있음
desc employees.employees;
create table assign_tbl(emp_no int, birth_date date, gender enum('M','F'), hire_date date);
insert into assign_tbl
	select emp_no, birth_date, gender, hire_date from employees.employees limit 5000;
select count(*) from assign_tbl;
create index idx_assign_tbl_birth_date on assign_tbl(birth_date); -- 인덱스 1
create index idx_assign_tbl_gender on assign_tbl(gender); -- 인덱스 2
create view uv_assign
as
	select birth_date from assign_tbl; -- 뷰

 

참고

"Mysql, 대용량의 여러 sql 파일은  cmd(명령 프롬프트)로 한번에 불러오자!"

한번에 많은 데이터를 불러오는 기능이 없는건지

cmd를 통해 열면 된다.

(mysql은 sql 한 파일씩밖에 못 불러오는 듯 하다)