我正在处理包含数百万条记录的表,并且经常必须运行查询以报告针对它的原因,这可能需要数小时,具体取决于连接级别和其他原因。我知道有很多方法可以优化查询,但我对另一种方法的可能性很感兴趣。
是否有可能通过 PHP(不是 MySQL 原生)获取 MySQL 查询的结果(比如“SELECT * FROM table”),将其作为数组存储在 Memcached 中,然后针对该缓存版本运行查询?会更快吗?粗略地说,这将如何工作?通过查询我的意思是,搜索一个可能看起来像这样的数组:
Array[0] {
Array[0] {
'field1' => 'value1',
'field2' => 'value2',
'field3' => 'value3'
},
Array[1] {
'field1' => 'value1',
'field2' => 'value2',
'field3' => 'value3'
}
Array[2] {
'field1' => 'value1',
'field2' => 'value2',
'field3' => 'value3'
}
}
有没有办法比允许 MySQL 进行查询更有效地“查询”PHP 数组?真的,这一切听起来像是利用 NoSQL 解决方案的绝佳机会,但是,唉,我无法控制它。
[编辑]
我们正在处理分布在大约 50 个数据库中的数据,每个数据库可能包含 50 个表,每个表的行数从 50 万到 5000 万不等。这都是遗留问题并且优化不佳。只是想用我所拥有的东西工作。
所有数据库都在同一个从服务器上,是的,需要进行跨数据库的查询。这是一个混乱的情况,我只是希望看看我是否可以通过代码更好地处理它而不是让 MySQL 完成工作(据我所知,答案可能是否定的)