假如有一张产品表p:
create table p (
pid int primary key, //产品号   
pname varchar(30),   //产品名称
pprice num(6,2),     //产品价格
pdate varchar(8)     //产品入库时间
我经常要做的操作是每天往库里面输入新产品,而且经常按时间(比如某一天)查询产品,这时我应该在哪些字段上建立索引?我是否需要在主键pid上建立索引,我查询不需要根据pid来查询(也就是where后面不接跟pid相关的信息)?

解决方案 »

  1.   

    主键不用建索引,只要是主键,数据库会默认给加一个unique的索引经常根据时间查询,可以考虑在pdate上建个索引。
    奇怪的是,楼主把这个类型建成了varchar(8)?sqlserver的写法吧?oracle是varchar2(8)
    我支持pdate用date类型的
      

  2.   

    PDATE上建个索引!时间类型不要用VARCAHR改用DATE
      

  3.   

    如果你创建表建立主键后是自动为该主键建立索引的,如果主要是按时间查询的话可以在时间列加入索引,如果时间经常用CHAR型来查询,建议加char型索引
      

  4.   


    支持,在这个基础上建一个函数索引。
    函数是 
    truncate(pdate, 'dd')