커다란 테이블 (현재 1400 만 개의 행과 개수)이 있습니다. 로그에서 '오류'목록입니다. 이러한 오류 중 일부는 업스트림에 고정되어있는 동안 필터링 할 알려진 문제입니다. 테이블에서 나는 2 비트 'CheckedForFilter'와 'Filtered'를 가지고 있으며, 10,000 행 블록에서 다음을 수행하려고합니다.MySQL - 큰 테이블의 동일한 하위 집합에서 여러 업데이트 쿼리 실행
1) Select on 10,000 rows (where 'CheckForFilter' is false)
2) Run a series of queries that set the 'Filtered' bit in certain criteria is true
3) After the last query runs set the 'CheckForFilter' bit to true
'필터링 된'비트를 설정할 수있는 쿼리 목록은 현재 5이지만 시간이 지남에 따라 늘어날 것입니다. 내 핵심 문제는 매번 동일한 행 집합을 선택하는 방법을 모른다는 것입니다. 너무 오래 실행되는 쿼리가 서버 복제를 지연시키기 때문에 쿼리를 관리 가능한 크기로 유지해야합니다.
음 ... 어쩌면 필터링을 수행 할 정규식 패턴이있는 것 같습니다. 여러 패턴이있는 경우 - 다른 테이블에 저장할 수 있으며 커서에서 모두 동적으로 비교할 수 있습니다. – Randy
다른 생각 - CheckedForFilter 값에 어떤 필터가 적용되었는지 (또는 더 많은 값으로 변경되었는지) 비트 필터를 사용하여 어떤 필터가 검사되었는지 나타낼 수 있습니다. 그러면 실행될 때마다 똑같은 설정에 대해별로 신경 쓰지 않아도됩니다. – Randy