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

Har*_*rma 2 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']."')
Run Code Online (Sandbox Code Playgroud)

但除了"id"之外,没有任何字段被索引."id"是"带AUTO_INCREMENT的主要".

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

Ale*_*exV 8

为什么你不想添加索引?你总是可以做一些技巧来解决问题,但它永远不会像索引一样快.

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

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

  • @Indian Girl您可以添加"常规"(非唯一)索引.您知道索引值并不总是唯一的,并且完全有效. (2认同)