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 한 파일씩밖에 못 불러오는 듯 하다)