내가 userid
만의 고유 포함하는 다수의 임의 행을 검색하려고하지만 type
열이 무작위로에 대한id/auto_increment 컬럼없이 MySQL에서 임의의 행을 여러 개 검색하는 방법은 무엇입니까?
내 목표 - type
만 0
또는 1
될 수 있습니다. 해당 테이블에는 주어진 시간에 1,000 개 미만의 행이 포함됩니다. ORDER BY RAND()
를 사용
을 배제하기 위해 무엇
내 테이블
CREATE TABLE tbl_message_queue (
userid bigint(20) NOT NULL,
messageid varchar(20) NOT NULL,
`type` int(1) NOT NULL,
PRIMARY KEY (userid,messageid,`type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
샘플 데이터
userid | messageid | type
---------------------------------------------------
4353453 | 518423942 | 0
4353453 | 518423942 | 1
2342934 | 748475435 | 0
2342934 | 748475435 | 1
7657529 | 821516543 | 0
7657529 | 821516543 | 1
0823546 | 932843285 | 0
0823546 | 932843285 | 1
는 이러한 유형의 최소 18,000 이상으로 가능하지 않다 쿼리가 실행됩니다. b y 애플리케이션에서 발생하며 높은로드를 유발합니다. SELECT DISTINCT
또는 GROUP BY
을 사용하면 더 효율적이며 항상 고유 한 userid
을 선택할 수 있지만 type
은 항상 허용되는로드로 0
과 같습니다.
일반적인 방법은 id
열을 만드는 것이지만 대체 방법을 찾고 있습니다 . 그룹 기본 키는 필요에 따라 변경 될 수 없으며 애플리케이션에 깊이 통합되지만 각 열의 구조는 변경 될 수 있습니다.
감사합니다. 질문의
샘플 데이터 세트를 기준으로 'change'값이 'type'인 것처럼 보입니다. 그것은 단지 1과 0이기 때문에, 왜 1과 0 값의 무작위 화를하지 않을까요? – dispake