php - 在庞大的数据库中搜索

标签 php mysql performance

我在 atm 上遇到了一些问题,也就是说,我有一个包含一些单词的数据库,大约有 900,000 个,我想做的是,检查其中是否有一个单词,如果是,则返回另一个字段行。

当我这样做时我会超时。我知道我可以更改超时,但我真正想要的是尽可能以某种方式使其更快。我的访客不喜欢等待 30 多秒才能得到他要找的东西。

我无法创建 900,000k 个静态文件,因为我在主机中有 inode 限制。

所以我几乎被关起来了,所以我可以做些什么来让它变得更好?

表结构:

编号 |词 |换句话说

CREATE TABLE `database` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `word` text COLLATE utf8_unicode_ci NOT NULL,
 `md5string` text COLLATE utf8_unicode_ci NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=966277 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

查询:

mysql_query("SELECT otherword FROM table WHERE word='$word'");

另一个查询:

mysql_query("SELECT word FROM table WHERE otherword='$otherword'");

主要查询(使用 GET 的文件)

$word = $_GET["word"];
echo $word;
$check = mysql_query("SELECT md5string FROM `database` WHERE word='$word'") or     die(mysql_error());
while (mysql_num_rows($check)>0)
{
$out = mysql_fetch_array($check);
$output = $out[0];
}

最佳答案

添加全文索引,如果搜索大于更新,则使用MyIsam 表。 否则按要求添加索引。

关于php - 在庞大的数据库中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10050907/

相关文章:

PHP MySQL 项目计数查询

php - 从同一行的同一表中的单个查询中获取两个人名

Android xml vs java 布局性能

javascript - 如何减少 0(n) 以找到求和特定值的对的第一个实例

php - 如何安全地使用 MySQLi?

php - 如果HTML maxlength 是110,为什么我可以输入114 个字符?

javascript - Jquery Load() 从另一个页面获取元素 id 值时返回 [object object]

php - 如何在用户单击下一个分页页面或页面刷新后保存复选框状态并将值发布到页面?

php - 如何从准备好的语句中获取行数据,然后将其与 AJAX() 函数一起使用

java - 回收站 View - 滚动时调整项目 View 的大小(用于类似轮播的效果)