这两种做法哪个更好?

我要戒烟了 2013-11-07 12:00:01
我想检查数据库中是否有满足条件的信息

假设表名为 good_info
有两个栏位
一个是username 一个是fb_id

需求是搜索出是否有与指定username和fb_id都相等的信息

1.
表中没有设主键
select * from good_info where username='~s' and fb_id=~p
然后看返回的结果中是否有数据

或是
2.
表中没有设username为主键
"select fb_id from good_info where username='~s'
然后在返回的信息中再进行筛选

不知道哪种更科学点呢?
...全文
132 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kobe8free 2013-11-08
  • 打赏
  • 举报
回复
第一种吧! 交给数据库引擎来处理更好点吧! 能想到的第二种方法应该是 select * from good_info where ~p=(select fb_id from good_info where username='^s') 或者 网络传输结果集给程序进行处理 应该都没有第一种高点
Rotel-刘志东 2013-11-08
  • 打赏
  • 举报
回复
方法一效率高。
一起混吧 2013-11-07
  • 打赏
  • 举报
回复
显然第一种好点
我要戒烟了 2013-11-07
  • 打赏
  • 举报
回复
引用 1 楼 rucypli 的回复:
第一种吧 能第一次筛选出来的 还费劲筛选两次?
第一种做法不会也筛选两次嘛?数据库中是如何执行 select * from good_info where username='~s' and fb_id=~p 这条语句的呢? 我是想,就像for循环找一样,如果只有一个筛选条件,当搜索到指定项时,就不用再搜索剩下的项了,但是如果有两个筛选条件,每次就都要遍历整个表才能得知结果 这样看来,我觉得第二种做法是不是会更好 不过不清楚数据库中是如何执行的,所以也是瞎猜
rucypli 2013-11-07
  • 打赏
  • 举报
回复
第一种吧 能第一次筛选出来的 还费劲筛选两次?
ACMAIN_CHM 2013-11-07
  • 打赏
  • 举报
回复
方法一效率略高 ...
yumenfeiyu945 2013-11-07
  • 打赏
  • 举报
回复
引用 5 楼 inzaghi97 的回复:
[quote=引用 4 楼 yumenfeiyu945 的回复:] 没有索引的情况下,不管你的where后面几个条件,都是全表扫描,然后再筛选出匹配的数据,一个还是两个条件相差不大
那如果第二种方法中,建立username的索引呢,此时用第二种方法会不会更好些?[/quote] 那么第一和第二种都会使用索引,区别是第一种有mysql给你做了筛选,第二种自己做筛选,也不会比第一种好
我要戒烟了 2013-11-07
  • 打赏
  • 举报
回复
引用 4 楼 yumenfeiyu945 的回复:
没有索引的情况下,不管你的where后面几个条件,都是全表扫描,然后再筛选出匹配的数据,一个还是两个条件相差不大
那如果第二种方法中,建立username的索引呢,此时用第二种方法会不会更好些?
yumenfeiyu945 2013-11-07
  • 打赏
  • 举报
回复
没有索引的情况下,不管你的where后面几个条件,都是全表扫描,然后再筛选出匹配的数据,一个还是两个条件相差不大

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧