첫페이지… 4, 5, 6 ….마지막페이지
같은 페이지네이션 만들어 오기
예제)
1 …. 6,7,8 …45
// prepared statement 예제
execute("select * from articles where id = ?", [2])
검색 , 정렬등을 할때 사용하는 필드에 대한 목차를 미리 만들어 놓는 것.
1.sql injection 알아보기
일반적으로 코드에 삽입 된 sql문을 고쳐쓸 수 있기에 당하는 공격이라 생각하면 됨
2. index란? (mysql)
data를 책이라 했을 때
양이 적으면--어떤 내용을 바로 찾기가 쉽겠다
많으면?
백과사전 같이
특정 내용 찾으라 하면 빨리 찾기 어려울 것
성경 같은 거 처럼 홈을 파놓는 식으로
원하는 부분을 미리 구분해 놓으면
ex ㄱ~ㄴ같이
하지만 내용 별로 검색이라면?
책을 한 권 더 만들어서
언어별로 분류
q 같은 내용인데 분류만 다르게 여럿 한다고 이해하면 될까요?
a 네
예로 이번 db는 양이 많은데
아이디로 찾으면-"프라이머리 키"라 빠르게 찾았음
인덱스를 만들면 다른 키로 찾을 있게 됨
그러면 어떤걸로 찾을 때 가장 빠를 지 자기가 계산해냄
이 설명은 개념 이해용이지 면접 대비용이 아님
무분별하게 만들면 데이터 늘어난다
만약 insert로 중간값 만들면 매번 만들어 줘야한다
그럴때 성능 줄고 수고 느는 퍼포먼스 저하현상
보통은 잘 분산 된 데이터를 빠진 컬럼만 잡는다
그래야 효과가 좋다
유니크성이 높은 필드를 키로 잡으면
ex남녀, 상태값 같이 적은거
효율성이 떨어질 지도?
무한정 다 잡으면 안된다
날짜 같은거 많이 잡는다
이지트리로 인덱스 생성
검색이 잘 되는 거
같은걸 많이 넣으면 인덱스성이 줄어서 효과가 떨어짐
q 이래서 게시판 도배를 많이 막는 군요
a 상관없다, 타이틀과 콘텐츠는 키로 잘 안 잡음
3. 페이지에 관해서 & 캐시
1,2,3,...,56 같은 걸 만드려면 뭘 가지고 와야 할까?
"아이디 넘버 총 값과 페이지에 비출 양을 나눠서?"
비슷
db전체 rows 가져와야한다
전체 게시물 수 / 보여줄 양,거기에 나머지가 0이 아닐 때
한 페이지 추가
perPage 생각해 보세요
200개 사과, 1바구니에 10까지 담는다면
20바구니 필요
204개라면 21개 필요
바구니가 필요한 갯수를 구하는것
그래서 전체 게시물 수 구하는 시퀄문
`select count(*) from 테이블명`
목차만 설정했는데도 엄청 빨라지네
외래키도 인덱스와 같다
외래키를 추가하면 목차를 만들어서 일단 빨라짐
그냥 키랑 뭐가 다르냐
다른 테이블을 참조함
제 성능 안남
다른회사는 인덱스로만 잡는데
무결성은 좋지만
다른걸 거쳐야 해서
입장권 유무 파악하는 파티가 무차별 파티보다 느릴것
지금은 빨라도 데이터가 쌓이면 무시 못함
페이징을 하려면 모든 게시물을 계속 들고 있어야 하는데
느려짐
남들 서비스는 빠르던데?
여기서 캐쉬 등장
반복적인, 사용빈도가 높은 데이타를 임시로 저장해주는 저장소/장치
웹사이트 생각해보자
큰 이미지 같은 경우 처음 뜰 때 느림 새로고침 빠름
첫번째 처리에서 느리니까 저장해 둠
꼼?수로
마지막 페이진 사람들이 잘 안가서 미리 정해주는 방법이 있음
나중엔 글로벌 변수 안쓰고 장치를 씀-나중에 함
배포, 껐다키면 캐쉬 날라가니까
업체는 캐쉬 저장장치 씀
번외
`explain` 알아보자
쿼리 튜닝