mysql仅查询一条数据时遇到的坑
admin
2023-04-18 09:24:08
0

下文给大家带来有关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仅查询一条数据时遇到的坑,大家觉得是自己想要的吗?如果想要了解更多相关,可以继续关注我们的行业资讯板块。

相关内容

热门资讯

“特高课”再现?日本强推“国家... 无视反对战争正义呼声 复刻战前军国主义体制日本强推“国家情报局”引发广泛担忧和批评(国际视点)本报记...
6G相比5G不只是速度更快 将...   6G相比5G不只是速度更快  【6G相比5G不只是速度更快】7月28日,相比5G,6G不仅是速度...
趣享夏日消保同行 泰康人寿深圳...   7月12日,为落实2026年“7·8全国保险公众宣传日”工作部署,泰康人寿深圳分公司结合三十周年...
泰康人寿深圳分公司联合泰康养老...   为深入践行金融工作的政治性、人民性,切实守护新就业群体的财产安全,7月23日下午,在深圳市居民金...
中牟改善买房必看:三代宅和四代... 准备在中牟买改善房的人,十有八九会纠结同一个问题:到底是买传统的第三代住宅,还是紧跟郑州置业主流买第...
徐巧芯剖析赖清德:最怕自己丢掉... 海峡导报综合报道 大罢免投票一周年纪念活动26日举行,台北市长蒋万安出席并怒轰,民进党一年过后仍没有...
中国红十字会总会紧急向广东调拨... 记者从中国红十字会总会了解到,针对台风“红霞”给广东造成的灾情,中国红十字会总会启动四级应急响应,紧...
这些少年,正被“毒蛋”围猎 李梦抽了几口电子烟,吐出了白色的烟雾,有一股浓烈的水果香味。随后,她看着自己握电子烟的手,跟身边人说...
蒋万安号召“倒阁”,卢秀燕认为... 海峡导报综合报道 台北市长蒋万安27日抛出震撼议题,表示多名民代向他提议推动“倒阁”,要求台行政机构...
特朗普将在白宫会见两位重要客人 俄乌战争仍未结束,美伊冲突又有升级风险。在此背景下,美国总统特朗普将在白宫接见乌克兰和以色列领导人。...