Title  标题表 
Title_ID int 4 标题编号  唯一 主键 自动加一 
City_ID INT 4 城市编号 
City_Name nvarchar 20 城市名称 
Title          nvarchar 200 标题 
Categories_ID int 4 分类编号 
Navigation_ID int 4 导航编号 
Navigation_Name nvarchar 20 导航名称 
Categories_Name nvarchar 20 分类名称 
Str_Day          tatetime 8 发布日期 
Title_Top bit bit          置顶 
数据如下: 
1 100 北京 测试 1 1 日期 1 
2 100 北京 测试 1 2 日期 0 
3 200 上海 测试 2 1 日期 1 
4 100 北京 测试 2 2 日期 1 
5 100 北京 测试 1 2 日期 1 
6 200 上海 测试 3 1 日期 0 
7 100 北京 测试 4 1 日期 1 
8 200 上海 测试 3 1 日期 0 数据表如上。我的开发平台是ASP.NET,因为在查询中将 根据导航编号查询所有符合条件的标题记录。按分类编号查符合的标题记录。其中导航编号和分类编号都是 <10的;城市编号为350种;不同的页面用不同的查询。100W左右的数据量。我用了分页存储过程。速度不是很理想。没用索引。 
请高手指点下。我该怎么用索引?用索引快吗?

解决方案 »

  1.   

    Title  标题表 
    Title_ID int 4 标题编号  唯一 主键 自动加一 
    City_ID INT 4 城市编号 
    City_Name nvarchar 20 城市名称 
    Title          nvarchar 200 标题 
    Categories_ID int 4 分类编号 
    Navigation_ID int 4 导航编号 
    Categories_Name nvarchar 20 分类名称 
    Navigation_Name nvarchar 20 导航名称 
    Str_Day          tatetime 8 发布日期 
    Title_Top bit bit          置顶 1 100 北京 测试 1 1 名称1 名称1 日期 1 
    2 100 北京 测试 1 2 名称1 名称2 日期 0 
    3 200 上海 测试 2 1 名称2 名称1 日期 1 
    4 100 北京 测试 2 2 名称2 名称2 日期 1 
    5 100 北京 测试 1 2 名称1 名称2 日期 1 
    6 200 上海 测试 3 1 名称3 名称1 日期 0 
    7 100 北京 测试 4 1 名称4 名称1 日期 1 
    8 200 上海 测试 3 1 名称3 名称1 日期 0
      

  2.   

    1\
    select Title_ID from Title where City_Name='北京' and Categories_ID=1 and Str_Day<='2009-12-02'
    2\
    select Title_ID from Title where City_Name='北京' and Navigation_ID=1 and Str_Day<='2009-12-02'
    3\
    select Title_ID from Title where City_Name='北京' and Str_Day<='2009-12-02'
    类似这样的简单查询。但要用好多次。该建哪个字段为索引?建成什么类型的索引?
      

  3.   

    建一个复合索引:City_Name、Categories_ID、Navigation_ID、Str_Day就可以了
      

  4.   

    Title  标题表结构 
    Title_ID int 4 标题编号  唯一 主键 自动加一 
    City_ID INT 4 城市编号 
    City_Name nvarchar 20 城市名称 
    Title          nvarchar 200 标题 
    Categories_ID int 4 分类编号 
    Navigation_ID int 4 导航编号 
    Categories_Name nvarchar 20 分类名称 
    Navigation_Name nvarchar 20 导航名称 
    Str_Day          tatetime 8 发布日期 
    Title_Top bit bit          置顶 
    ————————————————————
    类似如下数据
    1 100 北京 测试 1 1 名称1 名称1 日期 1 
    2 100 北京 测试 1 2 名称1 名称2 日期 0 
    3 200 上海 测试 2 1 名称2 名称1 日期 1 
    4 100 北京 测试 2 2 名称2 名称2 日期 1 
    5 100 北京 测试 1 2 名称1 名称2 日期 1 
    6 200 上海 测试 3 1 名称3 名称1 日期 0 
    7 100 北京 测试 4 1 名称4 名称1 日期 1 
    8 200 上海 测试 3 1 名称3 名称1 日期 0
    ————————————————————
    类似查询如下:
    1\ 
    select Title_ID from Title where City_Name='北京' and Categories_ID=1 and Str_Day <='2009-12-02' 
    2\ 
    select Title_ID from Title where City_Name='北京' and Navigation_ID=1 and Str_Day <='2009-12-02' 
    3\ 
    select Title_ID from Title where City_Name='北京' and Str_Day <='2009-12-02' 
    ——————————————————————
    正常结果不用索引没问题。
    ————————————————————
    问题是
    在设计这个表时加索引?给那个字段加什么类型的索引?
      

  5.   

    建一个复合索引:City_Name、Categories_ID、Navigation_ID、Str_Day就可以了
    支持
    直接在查询中指定该索引就行?
      

  6.   


    City_Name  Str_Day 
      

  7.   

    2005? 看我的blog有一个建议性的索引生成器