MySQL에서 멀티 세트 ("가방")를 구현하는 표준 방법을 찾고 있습니다. 이 다중 집합에 포함될 수있는 값은 문자열뿐입니다.멀티 세트를 구현하는 표준 방법은 무엇입니까?
그 이유는 계산입니다. 나는 미리 정의 할 수없는 사건들의 목록을 가지고 있으며, 나는 그들의 사건을 세고 싶다. 예를 들어 파이썬에서는 Counter을 통해이 작업을 수행 할 수 있습니다.
이전에 나는 약 sets in MySQL에 대한 질문을했습니다; 지금까지 찾은 최고의 솔루션은 TEXT
데이터 형식을 사용하여 데이터베이스에 쉼표로 구분 된 문자열을 넣은 다음 FIND_IN_SET
을 사용하여 요소가 집합에 있는지 확인합니다. 그러나이 솔루션은 텍스트 필드에 문자열을 천 번 저장할 때 멀티 세트에 좋지 않습니다. 다음을 계산하면 효율성이 떨어집니다.
사용 사례는 다음과 같습니다. 이벤트가 발생할 때마다 주어진 행과 관련된 Python 스크립트를 실행하는 동안 데이터베이스에 액세스하여 해당 이벤트를 데이터베이스의 각 행에 추가하려고합니다. 결국 각 행에서 각 이벤트의 발생 횟수를 계산하려고합니다. 데이터 삽입을 효율적으로 수행하는 것이 더 중요합니다 (최종 계산과 비교).
편집
내 원래 데이터 테이블 행의 수천을 포함하고, 각각은 "MULTISET 필드"(어떤 식 으로든)을 가져야한다. 그러한 다중 집합은 각각 고유 값을 너무 많이 포함하지 않을 수도 있지만 (예 : 20 미만), 그러한 값은 다중 집합에서 여러 번 (예 : 500 회 이상) 나타날 수 있습니다. 따라서 각 값의 문자열 (또는 다른 표현)은 나중에 계산되기를 기다리는 자체적으로 (내 이해에 비효율적 일 수 있습니다.) 예를 들어, 임의의 (원래) 행의 이벤트가 행을 만드는 다른 테이블은 매우 빠르게 커집니다 (수백만 행).
아마도 'group1 by table1_event.event'을 (를) 사용 하시겠습니까? 어쨌든, 이것은 실제로 내 질문에 대한 해결책이 될 수 있습니다. 그러나 내 원래 행에 ~ 100000 개의 이벤트가 포함될 수 있으며 원래 행이 수천 개일 수 있습니다. 이는 비효율적이라고 들립니다. 내 질문을 수정하겠습니다. – Bach
답변이 업데이트되었습니다. 감사합니다. – Bach