我想知道使用 jQuery 的即时搜索是否会导致数据库(MySQL)的大量负载。我知道有很多因素需要考虑,但是为了争论,假设您有 30,000 条记录要浏览?
4 回答
索引
索引会有所帮助,但索引也会减慢 INSERT/UPDATE/DELETE 语句的速度……
MySQL 还限制了可用于索引表中列的空间量,这取决于引擎类型:
- MyISAM:1000 字节
- InnoDB:767 字节
数据类型
为作业选择正确的数据类型。
不久前,我注意到关于 SO 的一个问题是将 TEXT 列为数据类型,但仅使用约 100 个字符。 他们反馈说,当他们将数据类型更改为 VARCHAR 时,查询时间减少到原来的 十分之一。
最优查询
请注意,在 LIKE 表达式的左侧使用通配符会使列上的索引变得无用。如果您需要这种搜索,请考虑使用MySQL 的本机MATCH .. AGAINST
语法或 Sphinx 等第三方支持来利用全文搜索 (FTS) 。没有看到查询就很难提供更多洞察力。
那要看。您的即时搜索实现比普通搜索模型多生成多少查询?
我见过的大多数 Javascript 库实际上都不会尝试运行查询,除非光标已经不活动一段时间了。这些结果仅是普通搜索的 3 - 4 倍。如果您真的对输入的每个字符都运行搜索,那么您将不得不处理与输入字符一样多的搜索。
话虽如此,这完全取决于查询中涉及的工作量。
这取决于您如何创建数据库。索引很重要,您选择的列也很重要。您应该考虑的最后一件事是搜索算法。如果您只是在 let's 关键字上使用 where 或 like 子句,我认为这会很好,但如果您追求大内容,那么您可能应该考虑 MySQL 的全文搜索功能。