c - 特定搜索问题的网站 : using C language or not?

标签 c database search web

应用程序必须使用用户指定的一些标准来显示从按字母顺序排列的列表中检索到的记录。该列表选自两个或多个表。用户可能会询问下一页或上一页,或提供其编号的特定页面。一个网页最多可包含 20 条记录。在 http://193.226.19.29:1200 查看我的演示

经典网络工具(例如 php 和 mysql):瓶颈

如果用户请求第 5000 页,数据库服务器必须选择前 100000 条记录。子句 LIMIT 将在达到此限制后停止搜索过程,并且 php 脚本仅获取最后 20 条记录。如果我们要求列表的最后一页,搜索过程可能需要几分钟。如何加快搜索过程以从列表的中间/末尾检索 20 条记录?

我的解决方案使用C语言

我的网络服务器在启动时读取主内存中的整个列表,然后准备好接受连接。它能够从给定位置开始搜索过程,然后检索所需的记录。网络服务器运行在 Celeron 768 Mhz、256 Mb 内存、Linux Fedora 操作系统上。

我看过很多网络程序员关于使用C语言开发网络应用的意见

Why do you not use C for your web apps?

How popular is C++ for making websites/web applications?

最初我实现了另一个搜索条件(名称以...开头)并且搜索过程非常快 - 大约 0.015 秒。现在,如果您满足字段名称包含...,搜索过程有时会很慢,因为在显示第一页时,网络服务器会检查整个列表。

使用 C 可以轻松解决搜索问题 - 至少从我的角度来看是这样。现在我必须找到一个优雅的解决方案来解决更新问题 - 即易于编写和可接受的运行时间。

有没有人知道一些基于经典网络工具的解决方案来解决这个问题,使得任何查询的响应时间都可以接受?

最佳答案

听起来您在数据库访问查询中遗漏了一些基本的东西,这应该是微不足道的。如果您想访问记录的第 5000 页,则不必选择 100000 条记录。我猜你正在检索记录,然后用 php 处理它们以查找匹配项。与其那样做,不如让 mysql 来做一些繁重的工作,比如:

SELECT * FROM societies WHERE society_name LIKE '%search_name%'

只需将 societies 替换为您的数据库名称,将 society_name 替换为包含协会名称的字段,将 search_name 替换为在搜索中输入的搜索词盒子。

关于c - 特定搜索问题的网站 : using C language or not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5177888/

相关文章:

xcode - 添加系统头搜索路径到Xcode

c++ - 将char数组传递给exec *()系列函数后,如何释放它们的内存

c - 错误: "an array may not have elements of this type"

mongodb - 存储和查询树状分层数据的有效方法

jquery - 检索标签兄弟时进行标签搜索

linux - 如何来回反向搜索?

c - gtk+ 文本编辑器 vim 类型模式(插入/命令)

c - 最小/最大函数的无辜宏定义有什么问题?

database - 哪些数据库系统支持 ENUM 数据类型,哪些不支持?

计算搜索次数