如何优化MySQL查询,如果我有我的查询太多或运营商?(how to optimize mysql

2019-08-01 03:51发布

使用PHP和MySQL

我已经抓住的Facebook用户ID的来自Facebook的阵列。

现在我想找到自己的这阵申请相应的用户名。

显然,在我的应用程序的用户表中包含唯一的用户名和独特的fb_uid值。

我的基本的了解OOF编程使我2种方式:

1)使用一个循环,并通过fb_uid阵列运行,并找到用户名逐个。

要么

2)从用户创建一个怪物查询像SELECT DISTINCT(用户名),其中fb_uid =值1 OR fb_uid =值2 ...

那么有没有出更好的办法?

谢谢。

Answer 1:

使用SQL的IN操作符来代替:

select distinct(username) from users where fb_uid in (value1, value2, ...)

http://www.w3schools.com/SQl/sql_in.asp



Answer 2:

如果您fb_uids名单是大(比如,超过100个或500转1000百个IDS),我不会用“或”一路走来:太多“或”这样会伤害DB,我想。

但每个ID做一个查询是不是真的不太妙......


那么,关于这两种观念的混合? 每做,比如说一个查询,50或100个fb_uids?

而且,而是采用大量或OR,您可以在去; 有点像这样:

select distinct(username) from users where fb_uid IN (id1, id2, id3, ...)

不知道它会在DB改变什么,但是,至少,它在寻找更好的^^

唯一的一点是,你不应该在使用中将太多ID; 所以,做一对夫妇的查询,与IDS 50和500之间的每一次可能是要走的路。


为了帮助你远一点,你可能需要看看array_slice ,以提取您的fb_uids阵列的“切片” ...



Answer 3:

还有一个MySQL的功能:对阵

SELECT * FROM customer WHERE status = 1 AND MATCH (person, city, company, zipcode, tags) AGAINST ('".$searchstring."' IN BOOLEAN MODE)

你inputstring会在不同的列进行搜索。

也许你可以重新考虑你的SQL语句,如果你不知道这个功能。



文章来源: how to optimize mysql query if i have too many OR operators in my query?