您好,登錄后才能下訂單哦!
下文給大家?guī)碛嘘P(guān)mysql僅查詢一條數(shù)據(jù)時遇到的坑內(nèi)容,相信大家一定看過類似的文章。我們給大家?guī)淼挠泻尾煌??一起來看看正文部分吧,相信看完mysql僅查詢一條數(shù)據(jù)時遇到的坑你一定會有所收獲。
場景:有用戶表user,有id,email,user_name,mobile等字段,現(xiàn)在要求根據(jù)指定email帳號查詢一個用戶。
乍一看,這個需求簡單,不用考慮直接寫出了一下sql
select * from user where email='xxx@yyy.com';
這時,就有可能踩雷了。
這種情況下,就悲劇了。由于沒有索引,即使email的記錄不重復(fù),也會全表掃描。
2.email列有普通索引
這種情況下能避免全表掃描,能用到索引,但是還會繼續(xù)使用到where條件進(jìn)行過濾。
在僅查詢一條記錄的時候,無論where條件是否有索引有什么樣的索引,最好在條件后面加limit 1限制一下。這樣就能避免全表掃描,盡可能提高查詢的效率。養(yǎng)成這樣的意識習(xí)慣,就不會踩坑。
select * from user where email='xxx@yyy.com' limit 1;
原理:當(dāng)mysql查詢時,如果有l(wèi)imit 1限制,查詢到滿足條件的第一條記錄的就返回結(jié)果,不會繼續(xù)查詢下去。
假如email列沒有索引,且剛好記錄在數(shù)據(jù)表的最后一條,這樣limit 1實際上也會全表掃描,這種情況下就最好考慮給email列加索引。
對于上文關(guān)于mysql僅查詢一條數(shù)據(jù)時遇到的坑,大家覺得是自己想要的嗎?如果想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。