数据库like优化或设计


情况如下:
设备表device、设备对应驱动各版本表driver
不确定每个版本所允许运行的操作系统,我这想的是操作系统存为win7_32/win7_64/win8_32这形式

表: http://ww1.sinaimg.cn/large/005vduMMgw1ekkf8s065ij311t0iudjd.jpg

假如要查询某设备(d_id=5)下win7_32操作系统的驱动
select * from driver where d_id=5 and dr_os like "%win7_32%"
假如要查询某设备(d_id=6)下win7_64操作系统的驱动
select * from driver where d_id=6 and dr_os like "%win7_64%"

但like看explain是搜索了所有行了。。。如果记录多的话,会出问题了。。
所以这想问下,这like该如何优化呢?索引等?或数据库优化?或操作系统这改为别的形式存?

数据库性能优化 mysql 数据库设计

比利海靈頓 10 years, 2 months ago

可以考虑将操作系统作为一个维度建立一张表。这样不用 like ,直接 where 就可以了。
%search% 这种形式的like本身效率就很低,不能走索引。 like 'search%' 可以

8XAX8 answered 10 years, 2 months ago

Your Answer