您的位置:首頁技術文章
文章詳情頁

mysql - sql索引問題

瀏覽:94日期:2022-06-14 10:34:57

問題描述

有3個語句。

where cid=?

where id=? and ownerid=?

where cid=? and ownerid=?

現在id已經是主鍵索引了。請問這樣的情況表表應該如何加索引?

分別對ownerid,cid添加索引嗎?

還有一種情況,另一個表:where cid=? and userid=?where userid=?where cid=?這3個sql語句應該如何添加索引?分別對userid和cid添加索引?

問題解答

回答1:

第一種加一個(cid,ownerid)的索引 順序不要顛倒 關于id和ownerid的不用加了 id已經是主鍵了 再加ownerid的索引純屬多余

第二種加一個(cid,userid)和userid

當然這兩種情況嚴格來說都需要確認哪個字段的選擇性高 如果差別很大的話 建議根據情況把復合索引的第一個字段使用選擇性高的字段

回答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`);

第二種情況樓上說得對。

相關文章:
国产综合久久一区二区三区