2017-09-05 3 views
0

mysql 데이터베이스에 약 110,000,000 개의 항목이 있습니다. 정확히 100M 항목으로 제한하고 싶습니다.데이터베이스에서 특정 번호를 지난 항목을 삭제하는 방법

  1. INSERT...SELECT...LIMIT 100000000와 새 테이블에 새 테이블을
  2. 삽입을 만들기 : 내가 뭘 생각하고 있었는데 어떻게 세 단계에 있었다.
  3. 이전 테이블을 삭제하고 새 테이블의 이름을 바꿉니다.

대신 DELETE 쿼리를 사용하여이 작업을 수행 할 수 있습니까? 당신이 정확한 숫자를 알고있는 경우

답변

0

는 아마도 가장 좋은 방법은 두 쿼리 것 올바른 행 수. 예 :

SELECT COUNT(*) FROM t 
/* 110,000,000 */ 
DELETE FROM t LIMIT 10000 /* (110,000,000 - 100,000,000 = 10,000) */ 
1

, 당신은 행을 삭제할 수 :

delete t from t 
    limit 10000000; 

그러나, 당신의 접근 방식을 사용하는 아마 빠릅니다.

+0

위의 내용은 100M 행을 삭제하거나 100M 행을 유지하겠습니까? – David542

+0

위는 10,000,000 개의 행을 삭제합니다. –

+1

@ David542 그러나 어느 행이 삭제되는지는 누구도 추측하지 못합니다. – Strawberry

0

확실하지 당신이 원하는되는이 작동하지만이 같은 소리 경우 : 다음을 제거하기 위해, 카운트를 얻기 위해, 첫째 :

DELETE FROM tbn_name LIMIT 100000000 - (SELECT COUNT(*) FROM tbl_name)

+0

이 나를 위해 작동하지 않았습니다. – David542

+0

좀 더 구체적으로 기재 할 수 있습니까? 오류가 있었습니까? 다른 메시지? 최종 결과는 무엇입니까? – kmoser

관련 문제