如何在Perl中提高多个数据库查询的效率?
发布时间:2020-12-15 23:34:54 所属栏目:大数据 来源:网络整理
导读:我有一个驻留在多个方法中的查询,每个方法(查询)可以包含多个参数.我正在尝试减少文件大小和行数,使其更易于维护.以下是这样的事件: $sql_update = qq { UPDATE database.table SET column = 'UPDATE!' WHERE id = ? };$sth_update = $dbh-prepare($sql_upd
我有一个驻留在多个方法中的查询,每个方法(查询)可以包含多个参数.我正在尝试减少文件大小和行数,使其更易于维护.以下是这样的事件:
$sql_update = qq { UPDATE database.table SET column = 'UPDATE!' WHERE id = ? }; $sth_update = $dbh->prepare($sql_update); if ($dbh->err) { my $error = "Could not prepare statement. Error: ". $dbh->errstr ." Exiting at line " . __LINE__; print "$errorn"; die; } $sth_rnupdate->execute($parameter); if ($dbh->err) { my $error = "Could not execute statement. Error: ". $dbh->errstr ." Exiting at line " . __LINE__; print "$errorn"; die; } 这仅是一个示例,然而,存在各种其他选择示例,其仅包含要传递的一个参数,但是也存在具有两个或更多个参数的一些参数.我想我只是想知道是否可以将这一切封装到一个函数/方法中,传入一个参数数组,如何将参数填充到execute()函数中? 如果这是可能的,我可以编写一个方法,只需传入SQL查询和参数,并获取对提取的记录的引用.这听起来安全吗? 解决方法
如果行数和可维护代码是您唯一的目标,那么您最好的选择是使用几个可用的精细ORM框架/库中的任何一个.
Class::DBI和
DBIx::Class是两个很好的起点.为了以防万一,你担心花费额外的时间来学习这些模块 – 不要:我只花了一个下午才开始并提高工作效率.以Class :: DBI为例,您的示例只是一行:
Table->retrieve(id => $parameter)->column('UPDATE!')->update; 这些框架唯一的缺点(如果是这样)是非常复杂的SQL语句需要编写自定义方法学习,这可能需要一些额外的时间(不要太多)来解决. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |