这个表(Product)的 PK 是 标准商品分类码+xxx
标准商品分类码是八位,头两位是表示一个大类,次两位是子类,5/6位是子类的子类,7/8位是5/6位的子类。xxx表示商品的顺序号。
如何设计数据库,才能使查询product的效率比较高?
查找一个product的时候,如果从10w条记录中直接查找,速度是否会受到影响?所以我考虑先让使用者首先进入大类中选择,从大类中选出子类,再从子类中选择出子类。这样范围缩小很多,从数据库中查找一个product的效率是否提高了一些?
各位还有其他什么好方法吗?
谢谢!
11 个解决方案
#1
你的表设计不好,应该是用复合主键:
大类编号 子类编号 子类的子类 子类的子类的子类 顺序号
几个字段构成复合主键
或者直接用树形结构(建议用这个)
产品表
编号 名称 上级编号
而product中用编号与产品表关联
大类编号 子类编号 子类的子类 子类的子类的子类 顺序号
几个字段构成复合主键
或者直接用树形结构(建议用这个)
产品表
编号 名称 上级编号
而product中用编号与产品表关联
#2
#3
尽量用编码来查询
#4
将产品基本信息,与数据分开
这样在检索时,可以先从产品基本表中,检索出某类产品所有的子编号
再与product关联查询,这样的效率就高很多
因为产品基本信息表的数据量无疑少很多,查询速度快,结果集再与product关联查询,可以充分利用索引,不像你原来的设计方案,基本上利用不了索引.
这样在检索时,可以先从产品基本表中,检索出某类产品所有的子编号
再与product关联查询,这样的效率就高很多
因为产品基本信息表的数据量无疑少很多,查询速度快,结果集再与product关联查询,可以充分利用索引,不像你原来的设计方案,基本上利用不了索引.
#5
谢谢 zjcxc(邹建)
将产品基本信息,与数据分开
——这句话不大理解,是否是这个意思:比如一个product有很多基本信息,比如价格/重量/宽度/长度/等等,把这些基本信息另外建一个表ProductDetail,而Product表只包含一些关键数据比如ProductID,ProductName?
将产品基本信息,与数据分开
——这句话不大理解,是否是这个意思:比如一个product有很多基本信息,比如价格/重量/宽度/长度/等等,把这些基本信息另外建一个表ProductDetail,而Product表只包含一些关键数据比如ProductID,ProductName?
#6
--这样说吧
产品类别表
编号(PK) 名称 上级编号(为0表示是最*)
产品基本信息表
编号(PK) 类别编号 名称 单位 规格....
BOM表
编号 子编号
产品类别表
编号(PK) 名称 上级编号(为0表示是最*)
产品基本信息表
编号(PK) 类别编号 名称 单位 规格....
BOM表
编号 子编号
#7
事实上,标准商品分类码,是全世界的一个商品分类标准,改动不大
如果根据你的分类原则,需要把这个8位的编码拆开来。这样如果查找一个商品的分类码,必须不断查找它的上级编码,这样的话,是不是反而累赘了?
另外,上面的BOM表是什么意思?
如果根据你的分类原则,需要把这个8位的编码拆开来。这样如果查找一个商品的分类码,必须不断查找它的上级编码,这样的话,是不是反而累赘了?
另外,上面的BOM表是什么意思?
#8
商品编码是你自己定义的嘛,编码规则你可以照原来的设计
我只是加上一个商品分类表,这样在分类检索商品和分类统计时,就可以大大提高处理效率.因为它不需要从10W的数据中去拆分类别出来
我只是加上一个商品分类表,这样在分类检索商品和分类统计时,就可以大大提高处理效率.因为它不需要从10W的数据中去拆分类别出来
#9
如果你的类别就上千种而已,你可以比较一下,从上千条记录中生成一个要检索的编码序列,和从10W条数据中去拆分出一个要检索的编码序列,你说谁的效率高?
#10
建立索引
#11
学习...
向 zjcxc(邹建) 致敬
向 zjcxc(邹建) 致敬
#1
你的表设计不好,应该是用复合主键:
大类编号 子类编号 子类的子类 子类的子类的子类 顺序号
几个字段构成复合主键
或者直接用树形结构(建议用这个)
产品表
编号 名称 上级编号
而product中用编号与产品表关联
大类编号 子类编号 子类的子类 子类的子类的子类 顺序号
几个字段构成复合主键
或者直接用树形结构(建议用这个)
产品表
编号 名称 上级编号
而product中用编号与产品表关联
#2
#3
尽量用编码来查询
#4
将产品基本信息,与数据分开
这样在检索时,可以先从产品基本表中,检索出某类产品所有的子编号
再与product关联查询,这样的效率就高很多
因为产品基本信息表的数据量无疑少很多,查询速度快,结果集再与product关联查询,可以充分利用索引,不像你原来的设计方案,基本上利用不了索引.
这样在检索时,可以先从产品基本表中,检索出某类产品所有的子编号
再与product关联查询,这样的效率就高很多
因为产品基本信息表的数据量无疑少很多,查询速度快,结果集再与product关联查询,可以充分利用索引,不像你原来的设计方案,基本上利用不了索引.
#5
谢谢 zjcxc(邹建)
将产品基本信息,与数据分开
——这句话不大理解,是否是这个意思:比如一个product有很多基本信息,比如价格/重量/宽度/长度/等等,把这些基本信息另外建一个表ProductDetail,而Product表只包含一些关键数据比如ProductID,ProductName?
将产品基本信息,与数据分开
——这句话不大理解,是否是这个意思:比如一个product有很多基本信息,比如价格/重量/宽度/长度/等等,把这些基本信息另外建一个表ProductDetail,而Product表只包含一些关键数据比如ProductID,ProductName?
#6
--这样说吧
产品类别表
编号(PK) 名称 上级编号(为0表示是最*)
产品基本信息表
编号(PK) 类别编号 名称 单位 规格....
BOM表
编号 子编号
产品类别表
编号(PK) 名称 上级编号(为0表示是最*)
产品基本信息表
编号(PK) 类别编号 名称 单位 规格....
BOM表
编号 子编号
#7
事实上,标准商品分类码,是全世界的一个商品分类标准,改动不大
如果根据你的分类原则,需要把这个8位的编码拆开来。这样如果查找一个商品的分类码,必须不断查找它的上级编码,这样的话,是不是反而累赘了?
另外,上面的BOM表是什么意思?
如果根据你的分类原则,需要把这个8位的编码拆开来。这样如果查找一个商品的分类码,必须不断查找它的上级编码,这样的话,是不是反而累赘了?
另外,上面的BOM表是什么意思?
#8
商品编码是你自己定义的嘛,编码规则你可以照原来的设计
我只是加上一个商品分类表,这样在分类检索商品和分类统计时,就可以大大提高处理效率.因为它不需要从10W的数据中去拆分类别出来
我只是加上一个商品分类表,这样在分类检索商品和分类统计时,就可以大大提高处理效率.因为它不需要从10W的数据中去拆分类别出来
#9
如果你的类别就上千种而已,你可以比较一下,从上千条记录中生成一个要检索的编码序列,和从10W条数据中去拆分出一个要检索的编码序列,你说谁的效率高?
#10
建立索引
#11
学习...
向 zjcxc(邹建) 致敬
向 zjcxc(邹建) 致敬