mysql - sql索引問題
問題描述
有3個語句。
where cid=?
where id=? and ownerid=?
where cid=? and ownerid=?
現(xiàn)在id已經(jīng)是主鍵索引了。請問這樣的情況表表應(yīng)該如何加索引?
分別對ownerid,cid添加索引嗎?
還有一種情況,另一個表:where cid=? and userid=?where userid=?where cid=?這3個sql語句應(yīng)該如何添加索引?分別對userid和cid添加索引?
問題解答
回答1:第一種加一個(cid,ownerid)的索引 順序不要顛倒 關(guān)于id和ownerid的不用加了 id已經(jīng)是主鍵了 再加ownerid的索引純屬多余
第二種加一個(cid,userid)和userid
當然這兩種情況嚴格來說都需要確認哪個字段的選擇性高 如果差別很大的話 建議根據(jù)情況把復(fù)合索引的第一個字段使用選擇性高的字段
回答2:情況1
ALTER TABLE test_table ADD INDEX index1 (id,ownerid);
ALTER TABLE test_table ADD INDEX index2 (cid,ownerid);
情況2
ALTER TABLE test_table ADD INDEX index3 (cid,userid);
ALTER TABLE test_table ADD INDEX index4 (userid);
回答3:針對第一個的三條sql語句:
alter table `table_name` add key idx_ownerid_cid(`ownerid`, `cid`);
第二個表的語句:
alter table `table_name` add key idx_cid_useridid(`cid`, `userid`);alter table `table_name` add key idx_userid(`userid`);回答4:
第一種情況加這個索引就可以了
alter table `table_name` add key idx_cid_ownerid(`cid`,`ownerid`);
第二種情況樓上說得對。
相關(guān)文章:
1. javascript - 可以DIY的頁面是如何實現(xiàn)的?2. 一個走錯路的23歲傻小子的提問3. 數(shù)據(jù)庫 - mysql boolean型無法插入true4. python - Django前臺url未能正確訪問方法求助?5. python - Django問題 ’WSGIRequest’ object has no attribute ’user’6. python - 請問matplotlib.pyplot.save的路徑如何更改7. javascript - js 對中文進行MD5加密和python結(jié)果不一樣。8. mysql - SQL問個基礎(chǔ)例子,書上的,我怎么看都看不懂..誰幫我解釋一下第2個為什么和第1個一樣?9. javascript - ajax 圖片文件與文本框數(shù)據(jù)一起提交上傳處理10. mysql服務(wù)無法啟動1067錯誤,誰知道正確的解決方法?
