一般来说,在使用php内置函数和查询语句之间,哪种方法更快?
答案 0 :(得分:1)
数据库喜欢或者与strpos或preg_match相似
您的数据库table
中可能包含许多行。如果你加载它们然后使用strpos
或preg_match
在应用程序级别进行过滤,这意味着所有记录都从数据库table
加载到内存中,为你的PHP代码提供服务,而这又将那些存储在内存中。如果数据库服务器与应用程序服务器不同,则必须通过网络或Internet路由发送所有数据。这些内存操作和数据传输会降低您的操作速度,因此在可以的情况下在数据库端进行过滤要好得多,因为即使出于某种原因db也是如此。操作比PHP函数稍慢,大内存操作和数据传输太多了。
喜欢
当你这样做时,你可以使用%
的通配符。如果您需要,那么in
将不是一个选项。否则,当你使用这样的东西时:
where myfield in ('a', 'b', 'c')
或者您使用此:
where myfield like 'a' or myfield like 'b' or myfield like 'c'
或者您使用此:
where myfield = 'a' or myfield = 'b' or myfield = 'c'
第一个和第三个选项是等效的,但是您需要在第一个案例中输入less,并且您可以更轻松地生成查询。第二个应该更慢,因为必须检查通配符和东西。
strpos与preg_match
strpos
按顺序查找大海捞针的第一次出现,而preg_match
则根据模式进行搜索。后者较慢,因为它必须检查正则表达式运算符,但它有更多的可能性,你可以搜索模式而不是给定的针串。