如何加快MySQL表中的搜索速度(无索引)

时间:2011-09-13 19:26:20

标签: php mysql

我正在开发一个网站(MLM),其中“memberdata”表中有大约155000行,包含63列。 所有成员经常从该表中搜索不同的数据。 我的SQL查询就像:

$search=htmlentities($_POST['search_field']); /// The field which will be selected
$value=htmlentities($_POST['search_value']); /// The value which will be compared
SELECT * FROM memberdata WHERE $search='$value' AND (senior='".$_SESSION['id']."' OR id > '".$_SESSION['id']."')

但是除了“id”之外没有索引字段。 “id”是“主要的AUTO_INCREMENT”。

我的查询花费的时间太长,有时会显示“超出服务器执行时间超过30秒”等。 我该怎么办?如何在没有索引的情况下更快地进行查询?我在共享主机上的Apache服务器上。

2 个答案:

答案 0 :(得分:8)

为什么你不想添加索引?你可以随时做一些技巧来加强,但它会从不和索引一样快。

至于回答您的实际答案,您可以尝试通过从SELECT / WHERE子句中删除不必要的字段来尽可能缩小数据库中的搜索范围。或者尝试做很多小问题而不是大问题...我担心你必须尝试一些解决方案,然后对它们进行一些基准测试,为你的设置选择最好的一个。

但添加索引更简单,更快(但不会错误地修复错误的数据库设计/错误的应用程序)。

答案 1 :(得分:1)

为什么不选择您需要的字段而不是所有字段?你不需要自动增量的字段。您离开搜索的内容越多,搜索的速度就越快,因为它需要经过的数据要少得多。