现在我是一名非常高级的 PHP 开发人员,并且对小型 MySQL 集有丰富的知识,但是我现在正在为我最近加入的一家初创公司构建一个大型基础架构,他们的服务器每天使用他们的服务器推送大约 100 万行数据强大的服务器能力和以前的架构。
我需要知道在数据库大小为 394.4 GB 的大型数据集(目前位于 8490 万行)中搜索的最佳方法是什么。它使用 Amazon RDS 托管,因此它没有任何停机时间或运行缓慢,只是我想知道在内部访问大型数据集的最佳方式是什么。
例如,如果我想搜索一个有 8400 万行的数据库,我需要 6 分钟。现在,如果我直接请求特定的 ID 或标题,它会立即为它服务。那么我将如何搜索大型数据集。
提醒您,通过传入一个变量通过数据库查找信息很快,但在搜索时执行速度非常慢。
MySQL查询示例:
SELECT u.*, COUNT(*) AS user_count, f.* FROM users u LEFT JOIN friends f ON u.user_id=(f.friend_from||f.friend_to) WHERE u.user_name LIKE ('%james%smith%') GROUP BY u.signed_up LIMIT 0, 100
84m 行下的查询非常慢。特别是 47.41 秒独立执行此查询,有什么想法吗?
我所需要的只是对挑战进行排序,然后我就可以随波逐流了。另外,我知道 MySQL 对于大型数据集以及 Oracle 或 MSSQL 之类的东西不是很好,但是我被告知现在要在 MySQL 而不是其他数据库解决方案上重建它。