PHP-mysql搜索百万记录
我有13个表,每个表中有+-100000条记录,相同的列,但如果我想在所有表中按列搜索一些记录,需要+-30秒。。。它太长了:(如果我在一个表中搜索第一次刷新需要2-3秒secong刷新需要0.3秒这对我来说很好,但只有一个表,我需要搜索并从所有表中获得结果。所以我现在总共有130万条记录,我需要一些快速搜索:(有什么帮助吗?太多了。)PHP-mysql搜索百万记录,php,mysql,nette,Php,Mysql,Nette,我有13个表,每个表中有+-100000条记录,相同的列,但如果我想在所有表中按列搜索一些记录,需要+-30秒。。。它太长了:(如果我在一个表中搜索第一次刷新需要2-3秒secong刷新需要0.3秒这对我来说很好,但只有一个表,我需要搜索并从所有表中获得结果。所以我现在总共有130万条记录,我需要一些快速搜索:(有什么帮助吗?太多了。) public function getTablesAoiData(){ return $this->database->query(
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;
}
只需将该列条形码编入索引,从30秒搜索所有表开始,如果我将其编入索引,我得到了4ms的答案:D首先,您没有发布表结构。您可能没有正确的索引,如果不知道完整的create table,我无法确定这一点
第二件事是,在多个表之间搜索总是很慢。您可以使用
UNION
来加快搜索速度,但速度还是会很慢,并且会在数据库中创建临时表,这在大多数情况下都不好。如果您无法更新结构以使数据位于一个表中,请再次使用为索引设计的某种服务查找和搜索像这样的数据,但您是否在所有这些数据中都索引了条形码
?为什么不使用一个表?我有Id主键,条形码不是唯一的,因为我可以使用相同的条形码创建更多记录您认为如果我有一个表包含超过130 000条记录,那么将是快速搜索?