2013-08-05 3 views
0

특정 순서로 데이터 행을 삽입해야합니다. 때로는 행을 제 시간에 삽입하는 것을 잊어 버리고 나중에 삽입해야합니다. 다른 행은 그 자리를 차지했습니다. 그리고 지금까지 수동으로 (물론 프로그래밍 방식으로) 다른 행 수의 인덱스를 변경합니다.이 행은 수 개의 행 또는 수백 개의 행이 될 수 있습니다. 이것은 매우 효율적이지 않으며 나는 갈 다른 방법을 찾고있었습니다. 내 생각에 날짜로 정렬하고 하루의 레코드를 재정렬하는 "하루의 인덱스"번호를 만들었지 만 나는 방황하고있었습니다 ... 거기에 행을 재정렬하는 모든 MySQL의 방법은 무엇입니까? 그것은 mysql에 필요한 행의 위치를 ​​알려주고 기본 키를 업데이트하도록하는 것인가?mysql 데이터베이스 레코드 사이에 행 삽입

+1

MySQL은'SELECT' 쿼리에'ORDER BY' 절을 지정하지 않으면 행의 순서를 보장하지 않습니다. 데이터를 추가하면 요청한 순서대로 반환됩니다. –

+0

@ Mike W : 어떻게해야합니까? 나는 명령 명령을 사용하는 방법을 알고 있지만 뭔가 (인덱스 번호, 아무것도 ...) 그것을 사용해야하지만 내가 이미 인덱스는 내 지연에 의해 엉망이라고 설명했다. – pzogr

+0

테이블 구조를 보지 않고 나는 말할 수 없다. –

답변

0

나는 당신이 당신의 테이블 디자인을 볼 필요가 있다고 생각한다. 이것은 처음부터 해결되었을 것이므로 대부분의 응용 프로그램에서는 실제로 문제가 아닙니다.

지금, 당신은 이미 거기에 데이터에 대한 몇 가지 합리적인 값을 테이블에 날짜 시간 열을 추가하고 초기화해야합니다. 새 행이 추가되면 각 새 행의 DateTime 열을 실제 DateTime으로 설정하십시오. 늦게 행을 추가해야하는 경우 레코드 에 추가해야하는 시간으로 DateTime을 설정하십시오.

당신이 당신의 테이블을 쿼리

ORDER BY myDateTime를 사용 (또는 당신이 그것을 호출하기로 결정 무엇이든). 행이 올바른 순서로 표시되어야합니다.

작은 테이블 (수천 줄 미만)의 경우 색인이 도움이되지 않을 수 있습니다. 큰 테이블의 경우 DateTime 열을 인덱싱해야합니다. 어떤 것이 가장 효과적인지 확인하려면 몇 가지 테스트를 실행해야합니다.

+0

시간을 추가 하시겠습니까? 이미 날짜 열이 있습니다. 그건 아마도 효과가있을 것입니다 ... 그리고 지금까지는 99 %의 사례를 고칠 것이기 때문에 지금까지 제안한 것 같습니다. 하지만 많은 행을 삽입해야하는 경우 문제가 될 수 있습니다. 행을 삽입하는 데 몇 초 밖에 걸리지 않으므로 행 사이의 시간이 5-8 초를 넘지 않습니다. 그래서 ... 5 ~ 8 연속 행을 삽입해야한다면 어떻게해야합니까? – pzogr

0

당신이 생각하는 것이 실제로 해결책입니다. 아직없는 경우 날짜 열을 만든 다음 해당 필드에 인덱스 만들기를 수행하고 쿼리에서 Order by도 사용합니다. 매뉴얼 이외의 다른 방법은 없으며 행을 저장하는 MYSQL 방식으로 재생하는 것은 좋지 않습니다. DB 엔진이 행을 저장하고 행을 저장하는 것이 이상적이지 않기 때문에 행을 저장하는 것이 좋습니다. 최적의 방법으로, 왜 그런 작은 일을 위해 효율성을 혼란스럽게합니까?

+0

기본 키를 가지고 놀고 싶지 않기 때문에 아마해야 할 일입니다. mysql은 나를 위해 그것을 할 수있는 방법이 있었다. – pzogr