我想检查数据库中是否有满足条件的信息假设表名为 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'
然后在返回的信息中再进行筛选不知道哪种更科学点呢?

解决方案 »

  1.   


    第一种做法不会也筛选两次嘛?数据库中是如何执行
    select * from good_info where username='~s' and fb_id=~p
    这条语句的呢?
    我是想,就像for循环找一样,如果只有一个筛选条件,当搜索到指定项时,就不用再搜索剩下的项了,但是如果有两个筛选条件,每次就都要遍历整个表才能得知结果
    这样看来,我觉得第二种做法是不是会更好
    不过不清楚数据库中是如何执行的,所以也是瞎猜
      

  2.   

    没有索引的情况下,不管你的where后面几个条件,都是全表扫描,然后再筛选出匹配的数据,一个还是两个条件相差不大
      

  3.   

    那如果第二种方法中,建立username的索引呢,此时用第二种方法会不会更好些?
      

  4.   

    那如果第二种方法中,建立username的索引呢,此时用第二种方法会不会更好些?
    那么第一和第二种都会使用索引,区别是第一种有mysql给你做了筛选,第二种自己做筛选,也不会比第一种好
      

  5.   

    第一种吧!
    交给数据库引擎来处理更好点吧!
    能想到的第二种方法应该是
    select * from good_info where ~p=(select fb_id from good_info where username='^s')
    或者
    网络传输结果集给程序进行处理
    应该都没有第一种高点