我有一个12位UPC-A格式条码的UPC数据库(1,900,000条记录)。目前,由于前导零,它们被存储为varchar(13)。我正在使用SQL Server 2008 R2。
我还有一个WCF 4.0 API方法,它根据UPC-A条形码匹配查询数据库。
修改:更多信息
产品
我的代码:
public JsonResult GetProductByCode(string code)
{
DBEntities db = new DBEntities;
Product product = (from prod in db.Products
where prod.Barcode == code
select prod).FirstOrDefault();
return Json( product , JsonRequestBehavior.AllowGet );
}
答案 0 :(得分:4)
我在条形码列上作为给定的索引。
如果将代码存储为数字,则可以节省空间。空间是时间,因为可以更快地读取更少的字节。此外,查找应该更快数字。当需要时,可以重建前导零,因为UPC-A是固定长度的代码。
答案 1 :(得分:1)
我认为存储为varchar(12)可能很好。为确保条形码查询的性能,您可以做的第一件事是确保条形码列上有索引。根据您对数据的使用情况,您可以考虑将其设为clustered index。
答案 2 :(得分:1)
确保您的sql搜索条件不包含函数,否则您的查询不可搜索。
我猜你的读数远远超过你的写入数,如果数据是没有前导零的,那么我会承担在写入时截断它们并搜索确切值的成本。此外,UPC-A是仅数字数据。我希望在数字数据上进行比varchar
更高效的搜索,因为您声明空间不是问题,所以如果您愿意,您甚至可以存储两个值。
您还需要列上的索引。