我的查询需要很长时间才能运行,为什么?

时间:2012-05-23 08:11:19

标签: sql

我有一个返回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 JOINS 中显示的字段添加了索引,但没有效果 如果可能的话,请你帮帮我吗?


请参阅此post,您可以找到答案

1 个答案:

答案 0 :(得分: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