我有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;
}
答案 0 :(得分:0)
首先,您没有发布表格结构。你可能没有适当的索引,在不知道完整的创建表的情况下我无法确定。
第二件事是,跨多个表搜索总是很慢。您可以使用UNION
使其更快,但它仍然会很慢并且将创建数据库中的临时表,这在大多数情况下并不好。如果您无法更新结构以在一个表中包含数据,则可以使用某种服务来设计索引和搜索数据,例如ElasticSearch
答案 1 :(得分:-1)
只需将列条形码编入索引,现在从30秒搜索所有表中我得到4ms所以如果我索引它的问题:D