PHP - 在milions记录中搜索mysql

时间:2017-06-12 05:14:00

标签: php mysql nette

我有13个表,每个相同的列有+ - 100 000条记录,但是如果我想在所有表中按列搜索一些记录,它需要+ - 30秒......它太长了:(如果我在1个表中搜索第一次刷新需要2-3秒,刷新需要0.3秒,这对我来说很好,但只有一个表,我需要搜索并从所有人获得结果。所以我现在有1 300 000条记录,我需要一些快速搜索:(任何帮助?很多

public function getTablesAoiData(){
        return $this->database->query("SELECT TABLE_NAME as `table` FROM information_schema.TABLES WHERE TABLE_NAME LIKE '%aoiData%'");
    }

public function searchBarcode($barcode){
        $result = array();
        foreach($this->getTablesAoiData() as $key => $value){
            $result[$key] = $this->database->query("SELECT * FROM `". $value->table ."` WHERE `Barcode`=" .$barcode)->fetch();
        }
        return $result;

    }

2 个答案:

答案 0 :(得分:0)

首先,您没有发布表格结构。你可能没有适当的索引,在不知道完整的创建表的情况下我无法确定。

第二件事是,跨多个表搜索总是很慢。您可以使用UNION使其更快,但它仍然会很慢并且将创建数据库中的临时表,这在大多数情况下并不好。如果您无法更新结构以在一个表中包含数据,则可以使用某种服务来设计索引和搜索数据,例如ElasticSearch

答案 1 :(得分:-1)

只需将列条形码编入索引,现在从30秒搜索所有表中我得到4ms所以如果我索引它的问题:D