이것은 MySQL의 질문입니다.mysql에서 위치 열을 다시 색인하기
다음 구조의 테이블이 있습니다.
reference
position
parent
모든 항목은 위치가 있어야하며 각 위치는 한 번만 사용해야합니다. 위치가 증가해야합니다 (40 개의 항목이있는 경우 위치는 1-40에서 시작해야합니다).
그러나이 표의 데이터는 모든 곳에서 사용됩니다 (동일한 위치가 두 번 이상 사용되고 위치가없는 일부 행). 직책을 다시 색인화하여 표를 재설정하고 싶습니다. 나는 이것을 수행 할 때 기존 주문을 존중하고 싶다. (가능하다면 - 포지션을 폐기 할 수 없다면).
------------------------------------------------------
| reference | position | parent |
|-----------------|--------------------|--------------|
|ASHDFNS |2 |89 |
|BSHDFNS |2 |89 |
|CSHDFNS |1 |89 |
|DSHDFNS |100 |89 |
|ESHDFNS |8 |89 |
|FSHDFNS |22 |89 |
|ASHDFNS |1 |11 |
|BSHDFNS |22 |11 |
|CSHDFNS |333 |11 |
|-----------------|--------------------|--------------|
원하는
-------------------------------------------------------
| reference | position | parent |
|-----------------|--------------------|--------------|
|CSHDFNS |1 |89 |
|ASHDFNS |2 |89 |
|BSHDFNS |3 |89 |
|ESHDFNS |4 |89 |
|FSHDFNS |5 |89 |
|DSHDFNS |6 |89 |
|ASHDFNS |1 |11 |
|BSHDFNS |2 |11 |
|CSHDFNS |3 |11 |
|-----------------|--------------------|--------------|
편집 : 죄송합니다, 단순히 자동 위치 테이블로 작동하지 않습니다 열 여러 부모 내에서 항목의 위치를 설명를 증가 (및 항목이 하나 이상의 부모를 가질 수 있습니다)
왜 이것을 원하니? 이 방법이 바람직 할 수있는 시나리오가 있습니다 (예를 들어, 하드 디스크가 연속적인 행에 대해 디스크에서 연속적인 sektor를 읽도록하는 등)하지만 매우 미세 최적화입니다. 좋은 색인은 당신을 위해 일의 99 %를 할 것이고, 테이블 주문은 그다지 중요하지 않습니다. – Konerak
순서는 중요합니다. 이는 시스템 내에서 그 자체로 의미를 지닙니다. 내 질문을 수정하여 색인과 관련이없는 색인을 삭제했습니다. 감사합니다 – calumbrodie
왜 downvote? – calumbrodie