Dan*_*Boy 5 c# t-sql sql-server biometrics
这是我第一次在这里问一些我似乎无法找到答案的问题.基本上,我创建了一个系统,可以接受一个人的指纹并将他/她登录到系统中.但随着时间的推移,我有数千条记录,指纹搜索变得比以往慢得多.
我所做的基本过程就是从表中选择所有生物识别数据,在我的代码中,我使用foreach循环逐个进行,因为指纹模板将其比较为教,直到它得到正确的.
你能提供一些提示让我的选择更快吗?任何帮助,将不胜感激.
using (conn = new SqlConnection(connString)) {
conn.Open();
using (comm = new SqlCommand("EXEC dbn.sp_opd_selectBiometrics", conn)) {
using (adap = new SqlDataAdapter(comm)) {
using (dt = new DataTable()) {
adap.Fill(dt);
if (dt.Rows.Count > 0) {
foreach (DataRow dr in dt.Rows) {
//Deserialize fingerprint template to bytes for verification
try {
byte[] _img = (byte[])dr["biometrics"];
string byteBiometrics = Encoding.UTF8.GetString(_img, 0, _img.Length);
getHcode = (string)dr["hpercode"];
MemoryStream ms = new MemoryStream(_img);
Template = new DPFP.Template();
Template.DeSerialize(ms);
Verificator = new DPFP.Verification.Verification();
// more code here...
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
通过文本搜索通常很慢,如果文本很大且数据量很大,则速度会变得更慢。.net我怀疑您在比较纯解决方案的背景下会得到更好的解决方案T-SQL。
步骤如下:
bio-metrics-hash列您已准备好进行搜索。
在您的应用程序中,使用输入参数调用存储过程bio-metrics-data。在该过程中,计算了该值的哈希值并仅通过哈希值进行搜索。
请注意,根据您的生物识别数据大小,您可能需要使用不同的方法,但想法是相同的。
在 SQL Server 2016 + 中,HASHBYTES函数允许最大值作为参数。