91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql僅查詢一條數據時遇到的坑

發布時間:2020-06-05 16:43:59 來源:網絡 閱讀:1814 作者:三月 欄目:MySQL數據庫

下文給大家帶來有關mysql僅查詢一條數據時遇到的坑內容,相信大家一定看過類似的文章。我們給大家帶來的有何不同呢?一起來看看正文部分吧,相信看完mysql僅查詢一條數據時遇到的坑你一定會有所收獲。

場景:有用戶表user,有id,email,user_name,mobile等字段,現在要求根據指定email帳號查詢一個用戶。

乍一看,這個需求簡單,不用考慮直接寫出了一下sql

select * from user where email='xxx@yyy.com';

這時,就有可能踩雷了。

分析一下這個雷區,存在以下幾種情形:
  • 1.email列沒有建立索引

這種情況下,就悲劇了。由于沒有索引,即使email的記錄不重復,也會全表掃描。

  • 2.email列有普通索引
    這種情況下能避免全表掃描,能用到索引,但是還會繼續使用到where條件進行過濾。

  • 3.email列有唯一索引
    這種情況最高效,與where id=xxx幾乎一樣的效率(前提是id是主鍵索引)
解決方案

在僅查詢一條記錄的時候,無論where條件是否有索引有什么樣的索引,最好在條件后面加limit 1限制一下。這樣就能避免全表掃描,盡可能提高查詢的效率。養成這樣的意識習慣,就不會踩坑。

select * from user where email='xxx@yyy.com' limit 1;

原理:當mysql查詢時,如果有limit 1限制,查詢到滿足條件的第一條記錄的就返回結果,不會繼續查詢下去。

特殊情況

假如email列沒有索引,且剛好記錄在數據表的最后一條,這樣limit 1實際上也會全表掃描,這種情況下就最好考慮給email列加索引。

對于上文關于mysql僅查詢一條數據時遇到的坑,大家覺得是自己想要的嗎?如果想要了解更多相關,可以繼續關注我們的行業資訊板塊。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台东市| 栾城县| 天津市| 闸北区| 濉溪县| 南京市| 桂东县| 塘沽区| 手机| 潜江市| 新巴尔虎左旗| 澎湖县| 龙井市| 九寨沟县| 天等县| 呼玛县| 洞口县| 工布江达县| 连江县| 泸定县| 广元市| 楚雄市| 尉犁县| 搜索| 静海县| 津南区| 鄂尔多斯市| 那坡县| 纳雍县| 景洪市| 仁布县| 海宁市| 赞皇县| 拉孜县| 姜堰市| 高陵县| 九龙县| 滦南县| 定远县| 始兴县| 呈贡县|