2012-05-23 118 views
0

我有一個查詢返回c.a 1800記錄(不是很多),但它需要很長時間跑(10秒),但我不明白爲什麼? 這是我的查詢需要很長的時間:我的查詢需要很長時間才能運行,爲什麼?

SELECT tb_KonzeptFunktionen.Konzept AS KonzeptID, tb_KonzeptFunktionen.Funktion, 
    tb_KonzeptFunktionen.Version, 
    qryFunktionen_Übersicht.ID, 
    qryFunktionen_Übersicht.Fehlerpfad_Kommentar AS Kommentar, 
    qryFunktionen_Übersicht.Fehlerpfadname, 
    qryFunktionen_Übersicht.Fehlerpfad_CDT, 
    qryFunktionen_Übersicht.Fehlerpfad_Kommentar, 
    qryFunktionen_Übersicht.symptombasiert, 
    qryFunktionen_Übersicht.Beschreibung_vorhanden, 
    qryFunktionen_Übersicht.Max_Pfad, 
    qryFunktionen_Übersicht.Max_Info, 
    qryFunktionen_Übersicht.Max_Status, 
    qryFunktionen_Übersicht.Max_Strategie, 
    qryFunktionen_Übersicht.Max_Prüfplan, 
    qryFunktionen_Übersicht.Min_Pfad, 
    qryFunktionen_Übersicht.Min_Info, 
    qryFunktionen_Übersicht.Min_Status, 
    qryFunktionen_Übersicht.Min_Strategie, 
    qryFunktionen_Übersicht.Min_Prüfplan, 
    qryFunktionen_Übersicht.Sig_Pfad, 
    qryFunktionen_Übersicht.Sig_Info, 
    qryFunktionen_Übersicht.Sig_Status, 
    qryFunktionen_Übersicht.Sig_Strategie, 
    qryFunktionen_Übersicht.Sig_Prüfplan, 
    qryFunktionen_Übersicht.Plaus_Pfad, 
    qryFunktionen_Übersicht.Plaus_Info, 
    qryFunktionen_Übersicht.Plaus_Status, 
    qryFunktionen_Übersicht.Plaus_Strategie, 
    qryFunktionen_Übersicht.Plaus_Prüfplan, 
    qryFunktionen_Übersicht.Beschreibung_allgemein, 
    qryFunktionen_Übersicht.Funktionsname   
FROM tb_KonzeptFunktionen RIGHT JOIN qryFunktionen_Übersicht 
    ON tb_KonzeptFunktionen.Funktion = qryFunktionen_Übersicht.Funktionsname 
WHERE (((tb_KonzeptFunktionen.Konzept)=[Formulare]![frm_Fahrzeug]![ID])) 

,這是另一個相關的查詢以上查詢:

SELECT tbFunktionen_Übersicht.*, 
    tbFunktionen.Funktionsname, 
    tbFunktionen.Funktionsbeschreibung, 
    tbFunktionen.diagnoserelevant, 
    tbFunktionen.ID AS FunktionsID 
FROM tbFunktionen_Übersicht INNER JOIN tbFunktionen 
    ON tbFunktionen_Übersicht.Funktion = tbFunktionen.ID 
ORDER BY tbFunktionen.Funktionsname, tbFunktionen_Übersicht.Fehlerpfadname; 

我添加了一個指數出現在ORDER奧德領域加入但無效果 如果可能,請你幫我嗎?


請參閱本post,海爾就可以找到答案

+1

你對tbFunktionen_Übersicht.Funktion和tbFunktionen.ID指標,如有丟失創建它們。 –

+0

yes這些字段上的Iput索引 – Baper

+1

聯接條件和where子句中使用的這些字段的類型是什麼。第二個查詢需要多少時間? –

回答

0

我PDO帶來了改善我的SQL查詢的:http://www.php.net/manual/en/intro.pdo.php

//SQL-HANDLING*******************************************************// 
//*********************************************************************// 
//General Example----------------- 
//$sqlHandling = new sqlHandling; 
//$sqlHandling->connectSQL($sqlArray['host'], $sqlArray['user'],$sqlArray['pass'], $sqlArray['dbName']); 
    //$tableNameArray = $sqlHandling->showTablesSQL($sqlHandling->dbh); 
class sqlHandling{ 

    //PDO - Object/ callItOutside with: $sqlClass->dbh 
    public $dbh = null; 

//connectDataBase-------------------// 
    //----------------- 
    //example: $dbh = connectSQL('localhost','admin','1admin','test'); 
    //start transaction 
    //$dbh->beginTransaction(); 
    //----------------- 
    //end transaction 
    //$dbh->commit(); 
    //$dbh = null; 
    //----------------- 
    //1:SQL-Location 
    function connectSQL($host, $user, $pass, $dbname){ 
     //endPrevTransaction 
     if($this->dbh != null){ 
      $this->dbh->commit(); 
      $this->dbh = null; 
     } 
     //establish connection 
     try{ 
      $this->dbh = new PDO('mysql:host='.$host.';dbname='.$dbname, $user, $pass); 
      $this->dbh->exec('SET CHARACTER SET utf8'); 
      return $this->dbh; 
     }catch(PDOException $e){ 
      print 'Error!: ' . $e->getMessage() . '<br/>'; 
      die(); 
      return FALSE; 
     } 
    } 
//createColumnSQL-------------------// 
    //example: createColumnSQL($dbh, 'backupexample', array('SomeName1 VARCHAR(30)', 'SomeName2 VARCHAR(30)', 'SomeName3 VARCHAR(30)', 'SomeName4 VARCHAR(30)')); 
    //1:PDO connection/2:table/3:array holding columns 
    function createColumnSQL($dbh, $table, $columns){ 
     //cicle through each array 
     foreach($columns as $tempColumn){ 
      //set query 
      $query = 'ALTER TABLE `'.$table.'` ADD COLUMN '.$tempColumn; 
      //send the query 
      $stmt = $dbh->prepare($query); 
      //send the data 
      $stmt->execute(); 
     } 
    } 
} 

這僅僅是我的PDO工作示例sqlHandling類。我知道retrieveAllValues不會對您有所幫助,但您可以採用此代碼供您使用。

MFG

相關問題