1

我正在从 MySQL 表中选择行,如下所示:

SELECT id, name, code FROM table

我现在要做的是选择代码以数组中指定的字符序列开头的行。什么是最佳实践 - a) 更改 MySQL 查询并使用 SUBSTRING 和 IN,或 b) 稍后使用 PHP 过滤行?

一种)

$qsql = mysql_query("SELECT id, name, code FROM table WHERE SUBSTRING(code, 1, 2) IN ('AB', 'BA', 'ZK', ...)");
while($sql = mysql_fetch_assoc($qsql)) {
    // Do something
}

或 b)

$codes = array('AB', 'BA', 'ZK', ...);
$qsql = mysql_query("SELECT id, name, code FROM table");
while($sql = mysql_fetch_assoc($qsql)) {
    if(!in_array($sql['code'], $codes))
        continue;
    // Do something
}

代码数组可能有大约 30 个元素。

4

2 回答 2

0

A) 尽可能让 SQL 做它的事情。它几乎总是比稍后处理数据更快。SQL 非常擅长管理/过滤数据,因此在可能的情况下,使用 SQL 处理数据。

于 2012-11-29T12:41:27.027 回答
0

动态生成 LIKE 列表。

$codes = array('AB', 'BA', 'ZK', ...);
$qsql = mysql_query("SELECT id, name, code FROM table WHERE code LIKE ('".implode("%','", $codes)."%')");
while($sql = mysql_fetch_assoc($qsql)) {
    // Do something
}

假设代码已清理

于 2012-11-29T13:30:42.557 回答