我想使用自己的算法来过滤从数据库中检索到的数据,而不是使用 MySQL LIKE 子句……但这会对大量数据的应用程序性能产生显着影响吗?
问问题
179 次
3 回答
2
是的,如果您总是检索所有数据然后对它们进行排序而不是让数据库处理它,它将对性能产生巨大影响。
于 2013-06-02T18:49:09.650 回答
2
数据过滤和搜索绝对是mysql服务器的工作。客户端数据过滤从来都不是一个好方法:
当您使用该LIKE
子句时,mysql 服务器将在将数据检索到客户端 (PHP)之前对其进行过滤。因此,当您不使用时LIKE
,传输的数据量要大得多,第一个性能问题是什么。
第二个问题是 PHP 将使用大量内存(整个数据集)。
第三个问题是您在 PHP 中需要的所有记录的循环
所以,你有三个很好的理由不这样做。请注意,除了该LIKE
子句之外, mysql 中还有很多字符串函数。他们应该适合。
于 2013-06-02T18:49:12.267 回答
1
这是一个非常糟糕的主意。您应该将过滤保留在 DBMS 系统中的一些原因是:
- DBMS 系统针对这些操作进行了优化
- 这种类型的操作会在您的网络服务器中造成大量开销。想象一下,必须在 PHP 中对数千或数百万个字符串进行字符串操作。这是由 DBMS 立即完成的。
- 将大量数据从数据库传输到网络服务器,可能还会传输到浏览器,这会使您的应用程序变得更慢
- 使用您自己的 PHP 代码进行过滤具有更高的引入错误和逻辑错误的可能性。
所以,让 DBMS 去做它的工作吧!
于 2013-06-02T19:09:24.913 回答