读书人

这样的查询语句效率怎么

发布时间: 2011-12-23 23:32:01 作者: rapoo

这样的查询语句效率如何?
各位兄弟帮我看看这句语句吧,我执行起来特别的慢!
我想在一个文章表里查询指定日期的记录,这个日期由日期控件的值来确定,我这个文章表中的记录有八十多万条(一个新闻系统)。

string selectdate=this.Calendar1.SelectedDate.ToString( "yyyy-MM-dd ");
string sqlstr= "SELECT * FROM dbo.tb_Article WHERE CONVERT(VARCHAR(10),PubDate,120) like '% "+selectdate+ "% ' ";

以上是我使用的查询语句。

各位高手看看这样的语句效率是不是很差呢?
哪位有没有更好的语句,请指点一下!谢了!

[解决办法]
建议:
如果确定选择列了,不要用select *
日期怎么用like呢,=不就行了
[解决办法]
string sqlstr= "SELECT * FROM dbo.tb_Article WHERE CONVERT(VARCHAR(10),PubDate,120) like '% "+selectdate+ "% ' ";

1.
不要在条件查询列上使用函数, 在这里相当于对你的80w条数据逐条 CONVERT , 然后再比较

2.
PubDate 是日期类型 ? ( 以下假设 TRUE )
日期类型请直接使用 = 或者 between 等逻辑运算符

3.
建议
string sqlstr= "SELECT * FROM dbo.tb_Article WHERE PubDate = ' " + selectdate + " ' ";

4.
请在 PubDate 上建立索引
!!!用好了索引,性能有可能成倍提高,
如果,你不知道什么是索引,请 google 数据库 索引

Good Luck!

[解决办法]


string selectdate=this.Calendar1.SelectedDate.ToString( "yyyy-MM-dd ");
string sqlstr= "SELECT * FROM dbo.tb_Article WHERE DATEDIFF(d, "+ selectdate+ ",[PubDate])=0 ";


d指天数.有相应的年,月,日,小时,分等...SQL有写好的函数
[解决办法]
string selectdate=this.Calendar1.SelectedDate.ToString( "yyyy-MM-dd ");
string sqlstr= "SELECT * FROM dbo.tb_Article WHERE DATEDIFF(d, ' "+ selectdate+ " ',[PubDate])=0 ";
[解决办法]
少了分号....不好意思

读书人网 >asp.net

热点推荐