0
我正在使用codeigniter和mysql,我試圖從mssql服務器獲取一些數據並更新到我的系統。它非常緩慢。請讓我知道如果有什麼錯誤我在做什麼..此代碼的糟糕表現
class systemupdate extends MY_Controller{
function systemupdate() {
return parent::MY_Controller();
}
function index(){
$message = '';
$message = "CRON Information::COMMON INVENTORY SYSTEM: QUANTITY UPDATE FOR TRADE WH STARTED.";
log_message('info', $message);
$this->load->model("cis/sapinventorymodel");
$objMainResult = $this->sapinventorymodel->FetchDetailsByUnit(420);
$mainResult = json_decode($objMainResult);
if((isset($mainResult)) && ($mainResult->results > 0))
{
$this->load->model("cron/systemupdatemodel");
foreach($mainResult->rows as $main)
{
$arrQuantity = '';
$arrQuantity = $this->systemupdatemodel->FetchTradeWhQuantity($main->number);
if((isset($arrQuantity)) && (count($arrQuantity) > 0))
{
if((isset($arrQuantity[0]->quantity)) && ($arrQuantity[0]->quantity != NULL)){
$objMainResult = $this->sapinventorymodel->SaveTradeWhQuantity($main->a_umber, $main->a_plant,
$main->a_unit,$arrQuantity[0]->quantity);
}
}
}
}
$message = "CRON Information::COMMON INVENTORY SYSTEM: QUANTITY UPDATE FOR TRADE WH FINSIHED.";
log_message('info', $message);
}
}
這裏是模型
class systemupdatemodel extends MY_Model {
function systemupdatemodel() {
parent::__construct();
$CI->sapData = $this->load->database("sapinventory", TRUE);
$this->sapData = &$CI->sapData;
}
function FetchTradeWhQuantity($p_intNumber){
$query = $this->sapData->query("SELECT quantity FROM master1 WHERE NUMBER = '$p_intNumber'");
if(($query->num_rows() > 0) && ($query->num_rows() == 1)){
return $query->result();
}else
{
$query1 = $this->sapData->query("SELECT quantity FROM master2 WHERE EANNUMBER = '$p_intNumber'");
if(($query1->num_rows() > 0) && ($query1->num_rows() == 1)){
return $query1->result();
}
}
}
}
記錄總數是7857即過很多次了環路。 sapinventory是一個mssql服務器。
你可以改進的一件事是將'($ query-> num_rows()> 0)&&($ query-> num_rows()== 1)'簡化爲'($ query-> num_rows()== 1 )'。這將減少'$ query-> num_rows()'調用的次數。當結果是「1」時,它總是大於「0」。 – mixable
表現有多糟糕?需要多長時間才能執行?您對從第一個查詢中提取的每一行數據進行2次數據庫查詢。所以這可能會有大約15,000次調用db。 – Jeemusu
@Jeemusu - 它應該是CRON的工作。它檢查第一個表,如果它不存在,則檢查第二個表的數據。它需要超過10分鐘。 – Hacker