strpos或pregmatch都在php vs MariaDB LIKE或IN查询中,哪个快?

时间:2017-02-04 10:10:15

标签: php mysql

一般来说,在使用php内置函数和查询语句之间,哪种方法更快?

1 个答案:

答案 0 :(得分:1)

数据库喜欢或者与strpos或preg_match相似

您的数据库table中可能包含许多行。如果你加载它们然后使用strpospreg_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则根据模式进行搜索。后者较慢,因为它必须检查正则表达式运算符,但它有更多的可能性,你可以搜索模式而不是给定的针串。