-1

我有 13 个表,每个表都有 +- 100 000 条记录,相同的列,但是如果我想在所有表中按列搜索一些记录,则需要 +- 30 秒......它太长了:(如果我在 1 个表中搜索第一次刷新需要2-3sec secong refresh 需要 0.3sec 这对我有好处,但只适用于一张表,我需要搜索并从所有表中获取结果。所以我现在有 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;

    }
4

2 回答 2

0

首先,您没有发布表结构。您可能没有正确的索引,如果不知道完整的创建表,我无法确定。

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

于 2017-06-15T08:39:51.500 回答
-1

它只需要索引该列条形码,现在从所有表中的 30 秒搜索我得到 4 毫秒,所以如果我索引它,请回答问题:D

于 2017-06-12T08:51:40.257 回答