我的查询语句是这样的。
from t in db.GameArticles where t.Type!=9 && t.Title.Contains(key) orderby t.PublishDate descending select t
不过这表总共才7800条记录,为什么这样查,速度很慢。
大家可以看看效果http://leyoufang.com/search/news?key=%E5%A4%A7
哪位大侠帮忙看下,这语句怎么写好
这样的问题,大家平时都没遇到过吗?
可以参考这篇文章:http://www.cnblogs.com/CreateMyself/p/4746258.html
你改成2条用union连接起来的查询。分别是
from t in db.GameArticles where t.Type<9 && t.Title.Contains(key) orderby t.PublishDate descending select t
from t in db.GameArticles where t.Type>9 && t.Title.Contains(key) orderby t.PublishDate descending select t
试试
这样分开有什么特别的意义吗
@tonyhangzhou: 楼下是对的.我没注意后面还有个like查询.不等于用union优化不明显,逻辑或的情况才明显.
用profiler 抓下生成的sql语句看下,这个linq 看起来是没什么问题的。
t.Title.Contains(key) 猜测是这里引发的查询缓慢
很大可能性是问题 title 这个字段没有索引,而where语句对这个title 进行了like 的模糊查询导致。
title字段有索引的,没啥用啊。跟我把MYSQL的内存使用限制到50M有关系吗
@tonyhangzhou: 先抓下 linq 生成出来的 sql语句,如果sql语句是正常的,那就是还有别的因素在制约这个速度。
@tonyhangzhou: 另外 like (%XXX%) 百分号前置时,是不会走索引搜索的