목록CS/DB (3)
bdfgdfg

가장 중요한 개념이 있다. 인덱스는 여러개의 칼럼에 설정할 수 있다. 단일 인덱스를 여러개 생성할 수 있고, 여러 칼럼을 묶은 복합 인덱스를 설정할 수도 있다. 다만 인덱스는 디비의 메모리를 사용하여 테이블 형태로 저장하므로 개수와 저장되는 공간은 비례하기에 where절에 자주 사용되며 고유한 값 위주로 인덱스를 설정하는게 옳다. select * INTO TestTable2 FROM [Order Details] -- NorthWind db의 테이블 -- 복합 인덱스 추가 CREATE INDEX INDEX_TESTINDEX ON TestTable2(OrderID,ProductID); -- 두 칼럼을 대상으로 인덱스를 걸음. 결론만 말하면 두 칼럼을 대상으로 인덱스가 걸려있을 때 where절을 통해 각 칼럼..
트랜잭션 트랜잭션은 간단히 말하면 여러가지 액션(여기서는 SQL)을 원자성으로 처리한다는 의미이다. 게임을 예로들면 특히 거래소같은 시스템을 예로들 수 있다. 1. A계정이 거래소에 물건을 가격과 함께 등록. 거래소 테이블에는 해당 물건이 등록되었음. 2. B계정이 해당 물건을 구매. 거래소 테이블에 일치하는 행의 정보를 가져옴. (없다면 Fail) 3. B계정이 해당 물품을 올바르게 구매할 수 있다는 조건이 확인되면 해당 아이템을 구매. B 계정의 인벤토리와 관련된 테이블에 해당 물품 추가. 4. A계정에는 물품을 등록한 판매금을 지급. A계정의 인벤토리와 관련된 테이블에 재화를 추가하거나 업데이트. 5. 거래소 테이블에는 해당 물품의 행(Row)을 삭제 간단하게 설명하려고 해도 여러가지 액션이 일어난..
Index 인덱스란 테이블의 데이터를 조회할 때 더 빠르게 검색하기 위한 것. -> 다만 그 만큼 용량을 더 잡아먹는다. 인덱스가 걸리지 않는 테이블을 조회하는건 사실상 O(N). 선형탐색과 다를게없다. O(N)이 느린건 아니지만, 많은 데이터를 저장하는 데이터베이스에서는 해당 검색시간은 많이 느린편에 속함. 인덱스는 이름그대로 색인. 책에서 목차를 먼저 찾고, 그 후 데이터를 조회하는 방식. 인덱스를 걸 대상은 고유한 값(고유한 값? -> 기본키)이여야한다. 인덱스는 책의 목차라고 했다. 예로들어 사진이라는 목차를 찾아갔는데 연관된 페이지가 100장 혹은 1000장을 넘어버리면 그게 무슨 의미가있을까. 즉 우리는 목차만 보고 그 목차와 연관된 실제 내가 찾고싶은 데이터를 빠르게 찾기 위해서 인덱스를 거..