使用索引是数据库优化里最重要的一种手段,今天通过一个简单的例子介绍建立索引查询的方法,希望能给刚入门的新手带来一点帮助。关于索引的基础知识,这里不多做介绍,有不清楚的可以参考一下这篇文章(Sql Server数据库中的索引)或是互联网上的相关资料。
    首先,创建一个简单的数据库DBTest,并为其创建一个表IndexTest,添加几个字段MainID(主键),Title,Content,CreateDate。
    第二步,为IndexTest表的Title字段创建一个索引,创建索引有两种方式,一是通过企业管理器进行创建,二是使用查询分析器。
    1、使用企业管理器创建索引;
    右键选中DBTest数据库中的IndexTest表,选择所有任务->管理索引,将会弹出一个新的对话框。
   
    大家可以看到,Sql Server已经为表中的主键创建了一个聚集索引。点击新建,为Title字段创建一个索引Index_Title.
   
    2、使用查询分析器
    如果熟悉SQL语言,利用查询分析器可以更快的创建索引,只需在查询分析器中输入以下代码,点击执行即可,得到的结果与上面的方法完全相同。
   
use DBTest
go
/*-- 检测索引是否已经存在 --*/
if exists( select name from sysindexes
           where name = 'Index_Title')
drop index IndexTest.Index_Title

/*-- 为Title字段创建索引 --*/
create nonclustered index Index_Title
    on IndexTest(Title)
    with fillfactor = 50
go

    第三步,编写测试程序,该程序使用C#进行编写,在Visual Studio 2005中测试通过。首先新建一个Windows应用程序,在窗体中添加一个TextBox、一个RichTextBox和一个按钮,双击按钮添加事件处理程序:
    
InBlock.gifstring strConnection = "Server=(local);initial catalog=DBTest;user id=sa;password=sa;Connect Timeout=30";
InBlock.gif            SqlConnection conn = new SqlConnection(strConnection);
InBlock.gif            string key = this.keyWord.Text;
InBlock.gif            string cmdText = "Select * From IndexTest Where Title Like '%"+key+"%'";
InBlock.gif            SqlCommand command = new SqlCommand(cmdText,conn);
InBlock.gif            try
InBlock.gif            {
InBlock.gif                conn.Open();
InBlock.gif                SqlDataReader reader = command.ExecuteReader();
InBlock.gif                while (reader.Read())
InBlock.gif                {
InBlock.gif                    textContext.AppendText(reader["Content"].ToString());
InBlock.gif                }
InBlock.gif            }
InBlock.gif            catch(Exception ex)
InBlock.gif            {
InBlock.gif                MessageBox.Show(ex.ToString());
InBlock.gif            }            
   
    一个使用索引查询的示例就这样完成了,是不是感觉很轻松?在实际的项目中,代码不会写得这样简单,但基本方法不会改变,有兴趣的朋友可以参照此例为CreateDate字段建立一个索引。如果你不嫌麻烦,可以给这个表添加上几万行数据(一个循环就可以搞定),然后对比一下使用索引前和使用后数据库查询的速度差距,加深对索引的理解。