0

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


请参考这篇文章,你可以找到答案

4

1 回答 1

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 不会进一步帮助您,但您可以采用此代码供您使用。

制造商

于 2012-05-23T08:31:57.113 回答