搜索字段的MySQL搜索优化

时间:2014-02-02 01:41:38

标签: 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)。

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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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

create index idx_data_name_last on data (first, last);

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