Naveen_learn has asked for the wisdom of the Perl Monks concerning the following question:
I have the requirement to print the first record of the $sql_pr based on differnent values of "seg_dtl_id" so that when the "while loop" ends, i have the file with the pan_id belongs to respective "seg_dtl_id" printed in the respective column seperated by "|" like below. 8000|6000|7000 8001|6001|7001 8002|6002|7002 8003|6003|7003 8004|6004|7004 here 8000,8001,8002,8003,8004 are pan_ids belong to a single seg_dtl_id and so and so forth. i can make it with the help of below code but the problem arises when it comes to performance as the code executes the same sql multiple times.Say if number of records are 1 million, the sql has to run 1 million times thereby making performance issues. please note am using basic version of perl (perl5/lib/5.00503) and guide me to reconstruct the code to overcome this problem.
open(file,"> Segmentation.txt"); my $index = 0; my $n = 0; my $sql_ct = "select max(count(pan_id)) from seg_dtl_panelist where s +eg_id ='1' group by seg_dtl_id, seg_id"; my $rs_ct = $db->query($sql_ct); while ($n < $$rs_ct[0][0]) { $sql = "select seg_dtl_id from segmentation where seg_id = '1'"; $rs = $db->query($sql); foreach (@$rs) { my $dtl_id = $$_[0] ; $sql_pr = "select pan_id from seg_dtl_panelist where seg_dtl_id = '$ +dtl_id' and seg_id = '1'"; $rs_pr = $db->query($sql); print file "$$rs_pr[$index][0]|"; } print file "\n"; $index++; $n++; } close (file);
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Need to Improve Performance
by moritz (Cardinal) on Jan 03, 2014 at 08:10 UTC | |
|
Re: Need to Improve Performance
by roboticus (Chancellor) on Jan 03, 2014 at 12:40 UTC | |
|
Re: Need to Improve Performance
by Anonymous Monk on Jan 03, 2014 at 08:39 UTC | |
|
Re: Need to Improve Performance
by Anonymous Monk on Jan 03, 2014 at 10:25 UTC |