问:数据库效率最低的地方是什么?

答:表扫描

问:表扫描常见的情况是

答:like '%a%' 这类查询

如果使用全文检索引擎,又无法满足我们的需求的时候怎么办,比如要从

一个商品名称 "农夫山泉300ml" 里面查找"泉3" ,全文搜索引擎就失效了。

我们可以改进为:

1.建立一个 索引表,这个表里面str允许保存若干字符,作为非聚集索引

create table t1 (id1 identity(1,1) primary key , str varchar(10), goods_id integer);

在str上建立非聚集索引

2.当我们保存新的商品信息的时候

将 "农夫山泉300ml" 拆分成

goods_id=1

insert into t1(str,goods_id)values('农',1);

insert into t1(str,goods_id)values('夫',1);

insert into t1(str,goods_id)values('农夫',1);

insert into t1(str,goods_id)values('山泉',1);

insert into t1(str,goods_id)values('泉3',1);

...

等任意组合的若干连续字符的索引记录。

当需要模糊查找 like '%泉3%'的时候,变成

select * from goods where goodsid in (select distinct goods_id from t1 where str='泉3');

这种方法,在很多的论坛一类的代码中有体现。

不过,这种方法更加适合需要模糊查询的字段比较短,而查询又有模糊,又有大量关联的情况,比如:

select * from goods, purchase where goods.goodsid=purchase.goodsid and goodsname like '泉3';

这种情况.转换后是

select * from goods, purchase where goods.goodsid=purchase.goodsid and goodsid in (select distinct goods_id from t1 where str='泉3');

更多相关文章

  1. 数据库sql及索引优化
  2. 如何:在SQL Server 2005中管理多个重叠索引
  3. 根据(var2) (var3) (var3)极限X (var3)对var1(1,2,…)组的适当索
  4. Mysql order by语句未使用索引的思考
  5. Alibaba Java开发手册索引规约学习笔记

随机推荐

  1. 将JavaScript函数的值插入SQL Server数据
  2. 没有AJAX的拖放文件上传,在前台同步?
  3. Chrome扩展程序:尝试传递邮件,一旦收到该邮
  4. 补全Gemfile缺少到javascript gem
  5. Ajax的实用技术——用户的注意力从页面的
  6. 为什么通过JavaScript更改样式会受到CSS
  7. 对jquery的 attr()和prop()理解
  8. JavaScript中,提取子字符串方法:Slice、S
  9. 【JavaScript】离线应用与客户端存储
  10. javascript入门笔记(1)——变量和计算