Php 循环更新查询的数据库性能?
我目前正在使用CodeIgniter构建数据库更新模型的查询 我使用Php 循环更新查询的数据库性能?,php,mysql,database,performance,Php,Mysql,Database,Performance,我目前正在使用CodeIgniter构建数据库更新模型的查询 我使用$keys=array\u keys($\u POST) 为了更新相应的数据库字段,我想这样做 foreach($keys as $key){ $data = $this->input->post($key); $this->db->query("Update $table SET '$key'='$data' WHERE user_id='$the_user->id'"); }
$keys=array\u keys($\u POST)
为了更新相应的数据库字段,我想这样做
foreach($keys as $key){
$data = $this->input->post($key);
$this->db->query("Update $table SET '$key'='$data' WHERE user_id='$the_user->id'"); }
(这不是生产代码,只是试图说明我的问题,因此没有转义、验证等…)
我的问题是,对于提交的每个表单数据,运行单独的查询是否会造成性能问题
编辑:抱歉,我不想让它听起来像是或不是的问题,很明显,如果是或不是,答案是肯定的,但我想了解更多关于它在多大程度上阻碍了性能的信息?是的
您正在发布多个更新,而不是一个更新。
性能影响不大可能出现在php循环中,而更多地出现在数据库连接中;因此,最小化应用程序和数据库之间的事务量将提高性能
您可以尝试:
UPDATE <table> SET key1=data1, key2=data2, key3=data3 WHERE user_id=<user>
更新设置key1=data1,key2=data2,key3=data3,其中用户id=
$this->db->query("
UPDATE <table> SET key1=data1 WHERE user_id=<user>;
UPDATE <table> SET key2=data2 WHERE user_id=<user>;
UPDATE <table> SET key3=data3 WHERE user_id=<user>;"
);
$this->db->query(“
更新SET key1=data1,其中user_id=;
更新SET key2=data2,其中user_id=;
更新设置key3=data3,其中用户_id=;”
);
另一个要考虑的事项,如果你是针对多个用户这样做的,在中使用<代码>(如<代码>,其中USER ID在($UsSeriLIST)中,其中$ UsSeriLIST是一个格式为“USER1”、“USER 2”、“USER 3”/代码>的用户字符串。
更新的问题以反映我对答案的希望,抱歉,我之前不清楚。性能影响将取决于您有多少键/值对、执行了多少查询、表有多大等等。如果您只执行5个查询,这几乎是瞬间的。更大的性能影响是确保user\u id
字段被索引。如您所述,这不是生产代码,因此如果您的查询更高级(多连接),那么您确实希望减少提交的查询数量(选项1)。谢谢,我不做选项一的唯一原因是因为我处理的是数量可变的键。因为我实际上只处理4-8个值,所以我现在可能不会担心它。