PHP/AJAx实时搜索的最佳方法-xml还是MySQL?

PHP/AJAx实时搜索的最佳方法-xml还是MySQL?,php,mysql,xml,ajax,search,Php,Mysql,Xml,Ajax,Search,需要一些建议 我看到了很多关于执行AJAX实时搜索的不同方法的讨论,其中使用了自动完成功能来建议搜索词。比如在谷歌或者YouTube上 一些教程建议使用AJAX从XML文件中获取结果。有人建议直接查询数据库。关于采取哪种方法,似乎有很多相互矛盾的建议,但对每种方法的利弊没有明确的共识 假设我有一个结构表: ID TITLE AUTHOR LINK 我想有一个搜索框,自动完成提供建议的标题。该表很大-100000多行 最好的方法是什么: 在每次击键时直接查询数据库(可能会设置一个函数

需要一些建议

我看到了很多关于执行AJAX实时搜索的不同方法的讨论,其中使用了自动完成功能来建议搜索词。比如在谷歌或者YouTube上

一些教程建议使用AJAX从XML文件中获取结果。有人建议直接查询数据库。关于采取哪种方法,似乎有很多相互矛盾的建议,但对每种方法的利弊没有明确的共识

假设我有一个结构表:

ID   TITLE   AUTHOR   LINK
我想有一个搜索框,自动完成提供建议的标题。该表很大-100000多行

最好的方法是什么:

  • 在每次击键时直接查询数据库(可能会设置一个函数来限制每个用户每秒的#服务器请求)

  • 查询XML文件。这样更有效吗?如果我直接查询数据库,是否会导致服务器过载

  • 还有别的吗


  • 有人能总结一下需要考虑的事情吗?如果您的站点上有AJAX live搜索,您会采取什么方法?

    首先,100000多行是一个小数据库。今天的计算机速度很快,它们有大量的内存,它们有快速的总线。但是,即使不是为了所有这些,一个适当的索引数据库也将使用类似于或更高级的变体,以确保在O(logn)时间内或更快地进行搜索。对于一个100000行的数据库,这意味着在最多17次比较中可以找到所需的元素。将其提升到10000000行只需要23次比较。因此,从这个意义上讲,规模几乎不是一个问题

    您将如何在中读取该XML文件?数据库是经过多年测试、调试和优化的精心设计的软件。而且,如果您对数据库的使用不满意,通常可以执行一些扩展或修改来提高数据库的效率。例如,Facebook每秒接受约6000万次查询,而且它们都是

    相比之下,XML文件在开始时没有索引,因此每次读取它时都需要线性搜索(以O(N)为单位)。文件I/O相对较慢,线性搜索较慢

    你的数据库也被设计成可以一次从许多用户那里获得点击而不必抱怨。您的操作系统可能设计用于处理多个用户对同一文件的同时访问,也可能未设计用于处理多个用户对同一文件的同时访问


    XML选项可能更好的一种情况是,您的数据库位于不同的服务器上,并且存在明显的延迟时间。在这种情况下,您可以考虑使用SQLite或尝试优化与DB的连接。

    首先,100000多行是一个小数据库。今天的计算机速度很快,它们有大量的内存,它们有快速的总线。但是,即使不是为了所有这些,一个适当的索引数据库也将使用类似于或更高级的变体,以确保在O(logn)时间内或更快地进行搜索。对于一个100000行的数据库,这意味着在最多17次比较中可以找到所需的元素。将其提升到10000000行只需要23次比较。因此,从这个意义上讲,规模几乎不是一个问题

    您将如何在中读取该XML文件?数据库是经过多年测试、调试和优化的精心设计的软件。而且,如果您对数据库的使用不满意,通常可以执行一些扩展或修改来提高数据库的效率。例如,Facebook每秒接受约6000万次查询,而且它们都是

    相比之下,XML文件在开始时没有索引,因此每次读取它时都需要线性搜索(以O(N)为单位)。文件I/O相对较慢,线性搜索较慢

    你的数据库也被设计成可以一次从许多用户那里获得点击而不必抱怨。您的操作系统可能设计用于处理多个用户对同一文件的同时访问,也可能未设计用于处理多个用户对同一文件的同时访问


    XML选项可能更好的一种情况是,您的数据库位于不同的服务器上,并且存在明显的延迟时间。在这种情况下,您可以考虑使用SQLite或尝试优化与数据库的连接。

    我可能会使用Sphinx,因为它非常快。查询正确索引的数据库的速度有多快?回答:非常快。读取整个XML文件并手动搜索所需内容的速度有多快?每次,一次又一次,读取整个文件?答:不太好。我可能会使用Sphinx,因为它非常快。查询一个正确索引的数据库有多快?回答:非常快。读取整个XML文件并手动搜索所需内容的速度有多快?每次,一次又一次,读取整个文件?答:不太好。