效率&;性能要求

本文关键字:性能 amp 效率 | 更新日期: 2023-09-27 18:00:10

我在用户要填写的表单中有许多文本框,我想检查用户的输入是否存在于数据库中。类似于一些网站在输入用户名时检查用户名的方式。如果数据库中存在后一个用户名,则会将其标记为绿色或带有复选框。

在我的情况下,用户必须填写一个完整的表单,其中每个文本框代表表中的不同列。检查数据库中是否存在该值的最佳方法是什么?这必须是最快的方法,因为我不能有滞后。

这就是我想采用的方法:

在用户开始输入数据之前,将对数据库执行SQL查询,以检索该表中的所有记录(一个简单的SELECT * FROM table)。接下来,这将被保存在DataTable中。

当用户完成在文本框中输入文本时(即,各个文本框未聚焦),将检查表单中的所有文本框,以查看其输入是否存在于数据库中。这将通过对每个文本框的DataTable运行LINQ语句来执行,以查看该值是否包含在DataTable中。

这种方法行得通吗?我希望它尽可能快,任何滞后都是不能容忍的。

效率&;性能要求

如果table中的行数不太大,我会使用这种方法
如果这个数字太大,无法合理地将它们保存在内存中,那么每次都必须访问数据库
您可以进行以下优化:

  1. 为需要搜索的每一列添加一个索引。请注意,这会增加向该表添加行所需的时间
  2. 仅在数据库中搜索实际更改的文本框
  3. 在搜索数据库时,以文本框旁边的小微调器的形式向用户提供视觉反馈

我建议不要一次检查所有字段。只要字段被填满,我就会考虑缩小数据范围的方法。

让我解释一下。假设DataTable中有10000条用户记录。用户填写完第一个字段(通常为"名字")后,只在DB中检查此列(SELECT users.firstName FROM table),然后根据结果更新DataTableSELECT * FROM table WHERE firstName like ('%firstNameField%'))。

您只能对加载了数据的字段执行此操作,这些字段可以为您节省一些额外的时间。

希望你能理解这个想法:)