2012-05-23 2 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

Каковы типы этих полей, используемых в условии соединения и где условие. Сколько времени занимает второй запрос? –

ответ

0

для меня PDO принес улучшения в моей SQL запросов Query: 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

Смежные вопросы