从具有数据库或公共变量的大数据中选择

阿什库法拉兹

我的表内容包含100,000条记录,我将函数getNameProcess调用了200次左右

从数据库中选择的PHP代码

function getNameProcess($id)
{    
    $time1=microtime(true);
    $baseClass = new MsDatabase();

    $query = "select CON_VALUE,CON_ID,CON_CATEGORY from content where CON_ID=$id and CON_VALUE<>'' and CON_CATEGORY='PRO_TITLE'";
    $res= $baseClass->query($query,WF_WORKFLOW_DB_NAME);

    $time2=microtime(true);
    $timeTotal=($time2-$time1);
    echo $timeTotal;  
    return $res[0]["CON_VALUE"];        
}

从公共变量中选择的PHP代码

$contentTable=array();
function getNameProcess($id)
{ 
    $time1=microtime(true);
    $baseClass = new MsDatabase();
    if(empty($GLOBALS['contentTable']))
    { 
        $query = "select CON_VALUE,CON_ID,CON_CATEGORY from content ";      
        $GLOBALS['contentTable']= $baseClass->query($query,WF_WORKFLOW_DB_NAME_MARKAZE);        
    }       
    foreach($GLOBALS['contentTable'] as $R)
    {
        if($R['CON_ID']==$id && $R['CON_VALUE']!='' && $R['CON_CATEGORY']=='PRO_TITLE' )
        {
            $time2=microtime(true);
            $timeTotal=($time2-$time1);
            echo $timeTotal;  

        return $R["CON_VALUE"];
       }
    }
     return 0;  
}

使用数据库获取进程名称时$totalTime为1.2秒,使用公共变量totalTime为3.5秒时?

为什么我使用公共变量$totalTime大于使用数据库时?

如何减少$totalTime

谢谢

罗纳德·斯威特

为了加快速度:

  1. 为CON_CATEGORY + CON_ID(或CON_ID + CON_CATEGORY,具体取决于其他查询)创建并编制索引

  2. 更改您的查找代码:

新代码:

$contentTable=array();
function getNameProcess($id)
{
    $time1=microtime(true);
    if(empty($GLOBALS['contentTable']))
    {
        $baseClass = new MsDatabase();
        $query = "select CON_VALUE,CON_ID from content WHERE CON_CATEGORY = 'PRO_TITLE'";
        $result= $baseClass->query($query,WF_WORKFLOW_DB_NAME_MARKAZE);

        $GLOBALS['contentTable'] = array();
        foreach($result as $R) {
            if ($R['CON_VALUE'] != '') $GLOBALS['contentTable'][$R['CON_ID']] = $R['CON_VALUE'];
        }
    }

    $retval = 0;
    if (isset($GLOBALS['contentTable'][$id])) {
        $retval = $GLOBALS['contentTable'][$id];
    }

    $time2=microtime(true);
    $timeTotal=($time2-$time1);
    echo $timeTotal;

    return $retval;
}
  1. 优化的第三种方法是结合这两种方法。首先,重要的是要有一些统计信息:相同的ID需要多少次?例如,如果平均要求一个ID 20次,则只需要10个查询,而不是200个。

喜欢:

$contentTable=array();
function getNameProcess($id)
{
    $time1=microtime(true);

    if (isset($GLOBALS['contentTable'][$id])) {
        $retval = $GLOBALS['contentTable'][$id];
    }
    else {
        $baseClass = new MsDatabase();
        $query = "select CON_VALUE,CON_ID,CON_CATEGORY from content where CON_ID=$id and CON_CATEGORY='PRO_TITLE'";
        $res= $baseClass->query($query,WF_WORKFLOW_DB_NAME);

        $retval = ($res[0]['CON_VALUE'] == '' ? 0 : $res[0]['CON_VALUE']);
        $GLOBALS['contentTable'][$res[0]['CON_ID']] = $retval;
    }

    $time2=microtime(true);
    $timeTotal=($time2-$time1);
    echo $timeTotal;

    return $retval;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从具有动态where条件的数据库中选择

来自分类Dev

从MYSQL数据库中选择当月和下个月的所有数据

来自分类Dev

从重复的数据库中选择除前 1 项之外的所有数据

来自分类Dev

如何使用MySQL在数据库中选择多个具有相同ID(或任何变量)的行?

来自分类Dev

如何从数据库中选择具有相同查询但条件不同的表中的数据?

来自分类Dev

数据库设计:如何指示列数据是公共数据还是私有数据

来自分类Dev

使选择框具有在PHP中选择的数据库条目集

来自分类Dev

MySQL使用REGEXP或LIKE选择具有数据库别名的表名

来自分类Dev

使用2个变量从数据库中选择

来自分类Dev

如何使用动态变量从数据库中选择

来自分类Dev

从Rails数据库中选择具有特定年份和月份的条目

来自分类Dev

JPQL getResultList转换为具有比从数据库中选择的属性更多的属性的类

来自分类Dev

从具有计数和基于计数条件的数据库中选择?

来自分类Dev

如何从Rails的数据库中选择具有ID的不同记录?

来自分类Dev

从ms-access数据库中选择具有链接表的列

来自分类Dev

使用具有Android界面的PHP从数据库中选择行

来自分类Dev

使用独特但两个字段从具有Zend的数据库中选择记录

来自分类Dev

从具有链接表的ms-access数据库中选择一列

来自分类Dev

从Rails数据库中选择具有特定年份和月份的条目

来自分类Dev

从具有计数和基于计数条件的数据库中选择?

来自分类Dev

Mysql中没有数据库选择错误

来自分类Dev

带有数据库选择的 CodeIgniter:

来自分类Dev

选择带有数据库信息的选项

来自分类Dev

具有数据库字符的SQLException

来自分类Dev

具有数据库的Collectionview调用图像

来自分类Dev

具有数据库用法的设计模式

来自分类Dev

具有数据库角色的Spring Security SAML

来自分类Dev

具有数据库承诺的javascript递归函数

来自分类Dev

具有数据库字符的SQLException

Related 相关文章

  1. 1

    从具有动态where条件的数据库中选择

  2. 2

    从MYSQL数据库中选择当月和下个月的所有数据

  3. 3

    从重复的数据库中选择除前 1 项之外的所有数据

  4. 4

    如何使用MySQL在数据库中选择多个具有相同ID(或任何变量)的行?

  5. 5

    如何从数据库中选择具有相同查询但条件不同的表中的数据?

  6. 6

    数据库设计:如何指示列数据是公共数据还是私有数据

  7. 7

    使选择框具有在PHP中选择的数据库条目集

  8. 8

    MySQL使用REGEXP或LIKE选择具有数据库别名的表名

  9. 9

    使用2个变量从数据库中选择

  10. 10

    如何使用动态变量从数据库中选择

  11. 11

    从Rails数据库中选择具有特定年份和月份的条目

  12. 12

    JPQL getResultList转换为具有比从数据库中选择的属性更多的属性的类

  13. 13

    从具有计数和基于计数条件的数据库中选择?

  14. 14

    如何从Rails的数据库中选择具有ID的不同记录?

  15. 15

    从ms-access数据库中选择具有链接表的列

  16. 16

    使用具有Android界面的PHP从数据库中选择行

  17. 17

    使用独特但两个字段从具有Zend的数据库中选择记录

  18. 18

    从具有链接表的ms-access数据库中选择一列

  19. 19

    从Rails数据库中选择具有特定年份和月份的条目

  20. 20

    从具有计数和基于计数条件的数据库中选择?

  21. 21

    Mysql中没有数据库选择错误

  22. 22

    带有数据库选择的 CodeIgniter:

  23. 23

    选择带有数据库信息的选项

  24. 24

    具有数据库字符的SQLException

  25. 25

    具有数据库的Collectionview调用图像

  26. 26

    具有数据库用法的设计模式

  27. 27

    具有数据库角色的Spring Security SAML

  28. 28

    具有数据库承诺的javascript递归函数

  29. 29

    具有数据库字符的SQLException

热门标签

归档