,15到44之間刪除了很多行,但45,46那些並沒有被放到15與44之間,
而46到50之間刪除的位置,卻被後面的,52,51填充回去了,為什麼會這樣?而且是52在51之前?
然後,46到50之間應該有三個空位,但填充了兩個之間,後面的53又跑到50後面去了,這又是為什麼呢?
.................
看各位的回答,好像是我沒有表達清楚。
我不是問15之後為什麼不是16,而是問為什麼44,46跑到52的前面去了??
回複內容:
,15到44之間刪除了很多行,但45,46那些並沒有被放到15與44之間,
而46到50之間刪除的位置,卻被後面的,52,51填充回去了,為什麼會這樣?而且是52在51之前?
然後,46到50之間應該有三個空位,但填充了兩個之間,後面的53又跑到50後面去了,這又是為什麼呢?
.................
看各位的回答,好像是我沒有表達清楚。
我不是問15之後為什麼不是16,而是問為什麼44,46跑到52的前面去了??
自增和你刪除資料沒有必然聯絡吧,自增的ID有自己單獨的序列,不是取表中的最大id+1
自增ID是會按照出現過的最大值增加的,不管你刪沒刪。
MySQL會為每一個自增列儲存一個這樣的最大值,而不是每次都去表裡尋找最大的值。
效率問題,自己想……
另外,序號是有意義的,可參照資料庫設計的基本原則。
每一個序號都對應著指定的一個事物。
這麼設計也可以避免因為不完全的刪除(比如另外一個表的列和ID相關,但是沒有隨之刪除)而導致混亂。
最後……
我表示,多年經驗,能不刪的就不刪。
完整性,可恢複性,資料採礦……
加一個列作為標記(表明是否有效),比刪除的設計要好。
PS:貌似發現自己沒理解清問題……
排序的問題,看你的SQL啊,那麼在意順序的話,就寫個order by咯。
如果需要按某個欄位排序,需要 order by
要不然mysql只會按它的規則來顯示資料,你沒指定規則,就不要期待它符合你想要的規則
插入資料的時候就是排好序的嗎?
1.自增id是指在寫表的時候自增長,而不是類似excel那樣刪除一行,下行自動上移。
2.順序問題,你沒執行sort?或者按別的欄位sort了?