2012-09-04 117 views
0

我有客户端列表。有约。该表中有200万条记录。该表具有以下结构:数据库表优化

ID(int),FLM,电子邮件,地址,电话,BDAy;除BDay以外的每种nvarchar类型。

我在ID和FLM列上有两个非聚集索引。当我执行查询时,如

SELECT * FROM tbl where FLM LIKE 'value' 

我遇到延迟约。 1分钟。因此问题:

  • 在FLM上添加聚簇索引会改变性能吗?
  • 我还能在这里优化什么?

我如何从程序中获得结果?使用SqlConnection进行连接,然后在SQlCommand对象中指定查询,然后通过DataReader获取数据。也许在这里我可以优化这个来获得更好的结果(也许使用数据集)?

+1

价值形式是什么?你使用通配符''%value%'?'吗? “展示计划”展示了什么?如果您在模式中使用初始%,我怀疑发生了表扫描。 – Ben

+0

是的,我使用通配符,这就是为什么在查询like,not =语句。但即使我不使用通配符,我也必须等待很长时间。 – seeker

+0

作为一个经验法则,表应该有聚集索引。您应该在列上创建具有大多数唯一行并且是增量式的聚集索引。聚集索引也不应该很宽,以避免在字符串列上有聚簇索引。 – sqlhdv

回答

0

使ID成为聚簇索引而不是非聚簇索引。只考虑您发布的查询,FLM列上的非聚集索引不会执行任何操作,因此您可以将其删除。

希望聚集索引可以提高性能。