保护索引要注意的问题

1. IS NULL 与 IS NOT NULL

不能用null作索引。不论什么包括null值的列都将不会被包括在索引中。

即使索引有多列这种情况下,仅仅要这些列中有一列含有null。该列就会从索引中排除。

也就是说假设某列存在空值,即使对该列建索引也不会提高性能。

  不论什么在where子句中使用is null或is not null的语句优化器是不同意使用索引的。

2. 避免使用不兼容的数据类型。

不兼容的数据类型代表着全表检索数据的类型转换。訪问将变为全表扫描

select * from employee where last_name = 100;注last_name为varchar类型

3. 联接列

  对于有联接的列,即使最后的联接值为一个静态值,优化器是不会使用索引的。

eg:select * from employee where first_name||‘‘||last_name =‘chen junjie‘;

4.通配符(%)开头的like语句

select * from employee where last_name like ‘%junjie%‘;

5.索引字段上进行运算会使索引失效。

尽量避免在WHERE子句中对字段进行函数或表达式操作,这将导致引擎放弃使用索引而进行全表扫描。

eg:SELECT * FROM T1 WHERE F1/2=100 应改为: SELECT * FROM T1 WHERE F1=100*2

6.避免使用!=或<>、IN 。NOT IN等这种操作符.

由于这会使系统无法使用索引,而仅仅能直接搜索表中的数据。

eg:select * from employee where age != 30;

优化器将无法通过索引来确定将要命中的行数,因此须要搜索该表的全部行。

改成:select * from employee where age<30 or age>30;()

7.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,

如:  select id from employee  where num=10 or num=20

能够这样查询:  select id from employee  where num=10 union all  select id from employee where num=20

时间: 2024-10-13 07:52:10

保护索引要注意的问题的相关文章

浅析MySQL各种索引

MySQL各种索引(因为是浅析大多都不刻意区分搜索引擎) INDEX(普通索引):最基本的索引,没有任何限制 ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) UNIQUE(唯一索引):与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值. ALTER TABLE `table_name` ADD UNIQUE (`column`) 注:创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现重复.唯

solr 的客户端调用solrj 建索引+分页查询

一.利用SolrJ操作solr API 使用SolrJ操作Solr会比利用httpClient来操作Solr要简单.SolrJ是封装了httpClient方法,来操作solr的API的.SolrJ底层还是通过使用httpClient中的方法来完成Solr的操作. 需要的包如下: 1. apache-solr-solrj-3.5.0.jar 2. commons-httpclient-3.1.jar 3.slf4j-api-1.6.0.jar 4.commons-logging-1.1.jar 在

Lucence.net索引技术 一

1.建立索引 为了对文档进行索引,Lucene 提供了五个基础的类,他们分别是 Document, Field, IndexWriter, Analyzer, Directory.下面我们分别介绍一下这五个类的用途: Document Document 是用来描述文档的,这里的文档可以指一个 HTML 页面,一封电子邮件,或者是一个文本文件.一个 Document 对象由多个 Field 对象组成的.可以把一个 Document 对象想象成数据库中的一个记录,而每个 Field 对象就是记录的一

solr schema 配置详解

一.字段配置(schema) schema.xml位于solr/conf/目录下,类似于数据表配置文件, 定义了加入索引的数据的数据类型,主要包括type.fields和其他的一些缺省设置. 1.先来看下type节点,这里面定义FieldType子节点,包括name,class,positionIncrementGap等一些参数. name:就是这个FieldType的名称. class:指向org.apache.solr.analysis包里面对应的class名称,用来定义这个类型的行为. [

Solr开发文档

Solr 是一种可供企业使用的.基于 Lucene 的搜索服务器,它支持层面搜索.命中醒目显示和多种输出格式.在这篇文章中,将介绍 Solr 并展示如何轻松地将其表现优异的全文本搜索功能加入到 Web 应用程序中. 开发环境: System:Windows WebBrowser:IE6+.Firefox3+ JDK:1.6+ JavaEE Server:tomcat5.0.2.8.tomcat6 IDE:eclipse.MyEclipse 8 开发依赖库: JavaEE 5.solr 3.4 个

solr入门教程

Solr 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试;两个核心配置文件介绍;维护索引;查询索引,和在查询中可以应用的高亮显示.拼写检查.搜索建议.分组统计.拼音检索等功能的使用方法. 1. Solr 是什么? Solr它是一种开放源码的.基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中.Solr 提供了层面搜索(就是统计).命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式).它易于安装和配置,而且附带了一个基于HT

solr配置-Solrconfig.xml

可参考配置:http://wiki.apache.org/solr/SolrConfigXml lib <lib> 标签用于引入solr引用SolrPlugins的jar包,当dir对应的目录不存在时,solr会忽略此, <lib dir="../../../contrib/extraction/lib" regex=".*\.jar" /> dataDir parameter 配置data目录的存放位置,data目录中存放了index和lo

Solr基础理论与维护管理快速上手(含查询参数说明)

1. solr基础 因为 Solr 包装并扩展了 Lucene,所以它们使用很多相同的术语.更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容.通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引. 在 Solr 和 Lucene 中,使用一个或多个 Document 来构建索引.Document 包括一个或多个 Field.Field 包括名称.内容以及告诉 Solr 如何处理内容的元数据.例如,Fi

使用 Apache Lucene 搜索文本

好东西 下手绝不留情 转自 http://www.ibm.com/developerworks/cn/opensource/os-apache-lucenesearch/ 简介 Lucene 是一个开源.高度可扩展的搜索引擎库,可以从 Apache Software Foundation 获取.您可以将 Lucene 用于商业和开源应用程序.Lucene 强大的 API 主要关注文本索引和搜索.它可以用于为各种应用程序构建搜索功能,比如电子邮件客户端.邮件列表.Web 搜索.数据库搜索等等.Wi