我从MySQL表中选择行如下:
SELECT id, name, code FROM table
我现在要做的是选择代码以数组中指定的字符序列开头的行。什么是最佳实践 - a)更改MySQL查询并使用SUBSTRING和IN,或b)使用PHP以后过滤行?
A)
$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个元素。
答案 0 :(得分:0)
A)让SQL尽可能地做它的事情。它几乎总是比以后处理数据更快。 SQL非常适合管理/过滤数据,所以尽可能使用SQL过程数据。
答案 1 :(得分: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
}
假设代码已消毒