작성
·
166
0
_id 값을 보면 union으로 결합된 서브쿼리 행들의 값과 일반 쿼리문의 값이 순차적으로 부여되지 않고, 값들이 지정되는 범위가 매우 차이가 많이 납니다. 서브쿼리 결과 id 값은 4자리이며, table 쿼리 문은 table에 저장된 _id 값을 불러오는 것같네요.
_id를 고유 키로 사용한다고 했으므로, 어떤 쿼리문을 실행한 결과는 모두 다르고 고유한 _id 값을 갖는다고 생각하면 될까요?
답변 1
0
질문에서 _id를 고유키로 사용한다고 하셨는데요. 사실 로그프레소 각 row의 유일키는 _table, _time, _id의 조합이기 때문에 _id만 고유키로 사용하지는 않습니다.
_id는 테이블에 저장될 때 부여되고 날짜가 시작하게 되면 1부터 시작하게 되는 64bit long 타입의 일련번호로 보시면 됩니다. 이는 _time이 중복이 되었을 경우를 대비한 것으로 이해하시면 됩니다.
다시 말해 테이블에 저장될 때 순차적으로 부여되고 한 번 부여되면 변하지 않게 되구요. _id 값은 그 날 데이터가 들어온 순서이고 같은 테이블이라도 다른 날짜끼리 _id가 중복될 수 있습니다.
이런 이유에서 _id는 데이터를 검색하거나 하는 조건으로는 사용되지 않기 때문에 크게 고민하지 않으셔도 될 것 같습니다.