PHP: MySQL Select 查询与字符串操作
PHP: MySQL Select Query vs String Operation
我有一个数据库和一个包含大约 100,000 个键/值对记录的字符串,我想创建一个函数来查找值。
考虑到性能(页面加载时间)和崩溃安全性,使用字符串还是数据库更好?这是我的两个代码示例:
1.
echo find("Mohammad");
function find($value){
$sql = mysql_query("SELECT * FROM `table` WHERE `name`='$value' LIMIT 1");
$count = mysql_num_rows($sql);
if($count > 0){
$row = mysql_fetch_array($sql);
return $row["family"];
} else {
return 'NULL';
}
}
2.
$string = "Ali:Golam,Mohammad:Offer,Reza:Now,Saber:Yes";
echo find($string,"Mohammad");
function find($string,$value){
$array = explode(",",$string);
foreach($array as $into) {
$new = explode(":",$into);
if($new[0] == $value) {
return $new[1];
break;
}
}
}
数据库确实是个好主意。
数据库很快,可能没有PHP中的基本字符串操作快,但是如果数据很多,数据库可能会更快。一个基本的 select 查询(在我当前的默认桌面硬件上)大约需要 15 毫秒,缓存不到 1 毫秒,如果索引正确,这几乎与 table 中的名称数量无关。所以您的网站将永远是快速的。
数据库不会导致 Whosebug 或内存不足错误并使您的站点崩溃(这在很大程度上取决于您的 PHP-设置和硬件)
数据库更灵活,假设您想在创建第一个数据集后添加/删除/编辑名称。使用 "INSERT INTO"、"DELETE FROM" 和 "UPDATE" 修改数据非常简单,比在代码中某处编辑一个包含大约 100.000 个条目的字符串要好。
你的代码
- 你肯定需要使用 MySQLi or PDO 来代替,代码可能是这样的:
$mysqli = new mysqli("host", "username", "password", "dbname");
$stmt = $mysqli->prepare(
'SELECT string FROM table WHERE name = ? LIMIT 1'
);
$stmt->bind_param("s", $value);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($string);
$stmt->fetch();
$stmt->close();
这使用MySQLi and Prepared Statements (for security), instead of the depracated MySQL extension (in PHP 5.5)
我有一个数据库和一个包含大约 100,000 个键/值对记录的字符串,我想创建一个函数来查找值。
考虑到性能(页面加载时间)和崩溃安全性,使用字符串还是数据库更好?这是我的两个代码示例:
1.
echo find("Mohammad");
function find($value){
$sql = mysql_query("SELECT * FROM `table` WHERE `name`='$value' LIMIT 1");
$count = mysql_num_rows($sql);
if($count > 0){
$row = mysql_fetch_array($sql);
return $row["family"];
} else {
return 'NULL';
}
}
2.
$string = "Ali:Golam,Mohammad:Offer,Reza:Now,Saber:Yes";
echo find($string,"Mohammad");
function find($string,$value){
$array = explode(",",$string);
foreach($array as $into) {
$new = explode(":",$into);
if($new[0] == $value) {
return $new[1];
break;
}
}
}
数据库确实是个好主意。
数据库很快,可能没有PHP中的基本字符串操作快,但是如果数据很多,数据库可能会更快。一个基本的 select 查询(在我当前的默认桌面硬件上)大约需要 15 毫秒,缓存不到 1 毫秒,如果索引正确,这几乎与 table 中的名称数量无关。所以您的网站将永远是快速的。
数据库不会导致 Whosebug 或内存不足错误并使您的站点崩溃(这在很大程度上取决于您的 PHP-设置和硬件)
数据库更灵活,假设您想在创建第一个数据集后添加/删除/编辑名称。使用 "INSERT INTO"、"DELETE FROM" 和 "UPDATE" 修改数据非常简单,比在代码中某处编辑一个包含大约 100.000 个条目的字符串要好。
你的代码
- 你肯定需要使用 MySQLi or PDO 来代替,代码可能是这样的:
$mysqli = new mysqli("host", "username", "password", "dbname"); $stmt = $mysqli->prepare( 'SELECT string FROM table WHERE name = ? LIMIT 1' ); $stmt->bind_param("s", $value); $stmt->execute(); $stmt->store_result(); $stmt->bind_result($string); $stmt->fetch(); $stmt->close();
这使用MySQLi and Prepared Statements (for security), instead of the depracated MySQL extension (in PHP 5.5)