我们一直在为一个具有大约 200 万个姓名和地址以及 300 万个相关订阅和会议出席记录的 mySQL 数据库设计一个搜索结果系统的原型。
在执行搜索并返回所有结果的那一刻 - 对于每个结果,我执行第二个查询以查找该人的唯一 ID 的订阅/会议。我在所有重要列上都有索引,并且各个查询在 phpMyAdmin(0.0xxx 秒)中执行得非常快,但是将其输入网页以显示(PHP,使用 DataTables 分页)并且页面需要几秒钟才能呈现。我们已经尝试将数据移植到 Lucene 数据库,这就像 LIGHTNING 一样,但瓶颈似乎仍然是显示结果而不是检索结果。
我想这可能是由于在浏览器中构建、服务和呈现页面的开销。我想我可以通过执行 GROUP_CONCAT 来删除我上面提到的子查询,以获取原始查询中的订阅代码,但是如何加快页面的显示速度呢?
我想的很少,经常使用 AJAX/服务器端分页查询可能是这里的方式(可能会得到 50 个结果,查询更小,页面更小并且可以更快地提供服务)但我欢迎你们提出任何建议有。