网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

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


当前文章:mysql仅查询一条数据时遇到的坑
标题来源:http://bjjierui.cn/article/ghjodh.html

其他资讯