MySQL搜索搜索字段的优化

标签 mysql sql optimization

我有一个包含 500,000 行的 MySQL 数据库。

我有一个包含 500,000 个组合字符串的列表,例如 First_Name 和 Last_Name。

我正在尝试使用类似的查询搜索 500,000 行

select count(*) FROM data WHERE first='wadaw' AND last='wdvv';

问题是它花费了太多时间,我使用多个线程,考虑到 MySQL 之间的通信开销和查询的运行时间,它似乎不是很有效。我想通过更改数据库的设置来开始改进,以更好地适应我的数据并为其优化 MySQL 数据库。

根据我在搜索算法方面的经验,未排序的列表将采用最广泛使用的方法的 n*log(n) 和采用基数排序的 N 等。这对于我的情况来说是 n^2 或 n^2log(n) ,如果你有 1,000,000 个字段,那就不太好了。

但是对于二分搜索,对于我的情况,它将需要 Log(n) ,因此需要 n*log(n) 。

我正在寻找一种充分利用我的数据库的方法。

有什么建议吗?

最佳答案

尝试对您正在使用的两个字段使用索引。在您的示例中:

create index idx_data_name_last on data (first, last);

这将只使用一个索引,因此时间将是 log(n) 而不是 n*log(n)。

关于MySQL搜索搜索字段的优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21506044/

相关文章:

SQL解码空值

javascript - 这个函数的性能可以变得更快吗?

c++ - Qt MySQL 适配器拒绝随机连接 : Unable to allocate a MYSQL

sql - 识别表中的重复数据

php - 用php远程连接mysql数据库?

Mysql 连接表 - 最佳实践?

c++ - 我是否需要在 1 核机器上明确禁用 OpenMP?

mysql - 优化 MySQL 中的查询 - 连接和子查询?

mysql - mysql 5.0 是否索引空值?

php - Codeigniter 查询返回空白