有兩種方法,一種方法使用mysql的check table和repair table 的sql語(yǔ)句,另一種方法是使用MySQL提供的多個(gè)myisamchk, isamchk數(shù)據(jù)檢測(cè)恢復(fù)工具。前者使用起來(lái)比較簡(jiǎn)便。推薦使用。
桑日網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司于2013年開(kāi)始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現(xiàn)的結(jié)果說(shuō)Status是OK,則不用修復(fù),如果有Error,可以用:
repair table tabTest;
進(jìn)行修復(fù),修復(fù)之后可以在用check table命令來(lái)進(jìn)行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用于MYISAM類(lèi)型的數(shù)據(jù)表,而isamchk適用于ISAM類(lèi)型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類(lèi)型,這里以myisamchk為例子進(jìn)行說(shuō)明。當(dāng)發(fā)現(xiàn)某個(gè)數(shù)據(jù)表出現(xiàn)問(wèn)題時(shí)可以使用:
myisamchk tablename.MYI
進(jìn)行檢測(cè),如果需要修復(fù)的話(huà),可以使用:
myisamchk -of tablename.MYI
關(guān)于myisamchk的詳細(xì)參數(shù)說(shuō)明,可以參見(jiàn)它的使用幫助。需要注意的時(shí)在進(jìn)行修改時(shí)必須確保MySQL服務(wù)器沒(méi)有訪問(wèn)這個(gè)數(shù)據(jù)表,保險(xiǎn)的情況下是最好在進(jìn)行檢測(cè)時(shí)把MySQL服務(wù)器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面啟動(dòng)MySQL服務(wù)器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監(jiān)聽(tīng)的Sock文件位置,對(duì)于使用RPM安裝的用戶(hù)應(yīng)該是/var/lib/mysql/mysql.sock,對(duì)于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己的實(shí)際情況進(jìn)行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫(kù)存放的位置。
需要注意的時(shí),如果你打算把這條命令放在你的rc.local里面,必須確認(rèn)在執(zhí)行這條指令時(shí)MySQL服務(wù)器必須沒(méi)有啟動(dòng)!檢測(cè)修復(fù)所有數(shù)據(jù)庫(kù)(表)
具體查詢(xún)?nèi)缦拢?/p>
SELECT*
FROM tableNameWHERE id IN(179906362505 , 63323849672846 , 1842319481513 , 11931471166161 , 926221118 , 124571 , 55434 , 9297877807)
查詢(xún)的結(jié)果和in中的順序并不一致,也就是說(shuō)在批量查詢(xún)時(shí),mysql的查詢(xún)并不是按照in中的值得順序來(lái)查詢(xún)的。那怎么才能保證和in查詢(xún)中的順序相同呢?
查詢(xún)了資料發(fā)現(xiàn)有兩種方式可以對(duì)in查詢(xún)的結(jié)果進(jìn)行排序。一種是order by find_in_set,另外一種是order by substring_index
比如1-2w是A累,2w-2.5w是B類(lèi),C類(lèi),D類(lèi).....,讓這些數(shù)據(jù)隨機(jī)重新排序
-ORDER('RAND()' )
之前一個(gè)表本來(lái)有數(shù)據(jù)的 后面刪除了記錄 但是添加ID后排序不是重1開(kāi)始的
如果是自增字段,刪除數(shù)據(jù),是根據(jù)原來(lái)的繼續(xù)往后排的
1、可以刪除這個(gè)字段,重新建立個(gè)自增字段就可以了
2、也可以重新設(shè)置排序起始
alter table table_name AUTO_INCREMENT=n
例如:
alter table papa_group AUTO_INCREMENT=1
SELECT * FROM table_name AS a ORDER BY a.`產(chǎn)業(yè)`,a.`市場(chǎng)份額` DESC;
表數(shù)據(jù):
海信 冰箱 0.20 1
海信 冷柜 0.20 2
海爾 冰箱 0.19 3
海爾 冷柜 0.19 4
美的 冰箱 0.18 5
美的 冷柜 0.18 6
查詢(xún)結(jié)果:
海信 冰箱 0.20 1
海爾 冰箱 0.19 3
美的 冰箱 0.18 5
海信 冷柜 0.20 2
海爾 冷柜 0.19 4
美的 冷柜 0.18 6
望采納。