在一个系统中,使用mysql数据库,我有两张表:
设备异常表,A:(a_id, ..., b_id)  b_id为foreign key,b_id为设备id
设备信息表,B:(b_id, ..., csite) csite为工地名称
以上两张表满足第三范式。
A有50000数据,B有100数据我现在系统有需求: 对工地分组 统计设备异常数量 并排序, sql:select csite, count(*) as z
from A left join B
group by csite
on A.b_id = B.b_id
order by z desc逻辑上没有问题,但我想建立索引优化,我不知道在mysql中怎么对两张表建立关联的索引。
如果将csite信息copy到A表中,则会破坏第三范式。
是不是这种情况只能在A表中设置csite冗余信息以建立索引?sql

解决方案 »

  1.   

    谢谢,按你的意思 在这里我应该增加冗余以提高查询效率是吗?一般情况应该先考虑3Nf,然后考虑效率问题时,在考虑效率问题时可以不严格遵守3nf,是这个意思么?
      

  2.   

    谢谢,按你的意思 在这里我应该增加冗余以提高查询效率是吗?一般情况应该先考虑3Nf,然后考虑效率问题时,在考虑效率问题时可以不严格遵守3nf,是这个意思么?