mysql 索引
1
索引的意义:
优点:
索引用来快速地寻找那些具有特定值的记录,如果没有索引,执行查询时必须从第一个记录开始扫描表中所有记录,表里面的记录数量越多,这个操作的代价就越高。
缺点:
索引要占用磁盘空间;且任何写操作涉及的索引个数多的话会引起降速,因为
MySQL
不仅要把改动数据写入数据文件,而且它还要把这些改动写入索引文件。
以下就对索引:
Index Test (col1,col2,col3)
进行分析,如有不准确之处,欢迎大家拍砖。
2
从左至右的正向索引匹配(第一行是索引可用场景,第二行是索引不可用场景)
右边的适用
where
col1=$para1;
where
col1=$para1and col2=$para2;
where col1=$para1
and col2=$para2 and col3=$para3;
右边的不适用
where
col2=$para2;
where
col1=$para1and col3=$para3;
where col2=$para2
and col3=$para3;
3
like
与索引有效性的关系(第一行是索引可用场景,第二行是索引不可用场景)
右边的适用
where col1 like
‘aaa%’;
where col1 like
‘aaa%’ and col2 like ‘bbb%’ ;
where col1 like
‘aa%a%’ and col2 like ‘bb%b%’ ;
右边的不适用
where col1 like
‘%aaa’; (
通配符在前,无确定范围
)
where col1 like
‘%aaa’ and col2 like ‘%bbb’ ;
where col1 like
‘%aa%a’ and col2 like ‘%bb%b’
;
4
or
、
and
与索引有效性的关系(第一行是索引可用场景,第二行是索引不可用场景)
右边的适用
where
col1=$para1and col2=$para2;
where
col1=$para1or col1=$para11; (
同一
column
)
where col1=$para1
or col1=$para11 and col2=$para2;
右边的不适用
where
col1=$para1or col2=$para2; (
无确定范围
)
where col1 like
‘%aaa’ or col2 like ‘%bbb’ ;
where col1=$para1
or col2=$para2 and
col3=$para3;
5
其他
mysql
内置函数与索引有效性的关系
(
以
col1
举例
)
(第二列是可用场景,第三列是不可用场景)
函数名
可用场景
不可用场景
替代办法
SUBSTRING
--
SUBSTRING
(
col1,1,2
)
不可用,拆分了
sq
相关文档:
一、MySql简介概要
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司,后来
被Sun公司收购,现在正在被甲骨文收购,支持FreeBSD、Linux、MAC、Windows
等多种操作系统 与其他的大型数据库例如Oracle、DB2、SQL Server等相比功能稍弱
一些 题外话:Postgresql&n ......
相信很多的朋友对使用iBatis管理数据库很不习惯,因为我们要手写代码,特别是dynamic
query部分更是不知如何嵌套,而这些是可以用工具的!下面介绍一种最常用的!不废话了,直接上配置过程!
1、获得 http://ibatis.apache.org/abator.html
Eclipse可以自动的进行Update获取此Plugin ......
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using MySql ......
一直习惯使用小写的SQL保留字,没想到今天居然遇到了麻烦哈!!和谐一下MYSQL啦!
环境:Server version: 5.1.37-1ubuntu5 (Ubuntu)
alter table child_table_name
add constraint constraint_name
foreign key (column_1)
references reference_table_name(reference_column_1);
和
ALTER TABLE child_t ......
使用mysql时,通常表中会有一个自增的id字段,但当我们想将表中的数据清空重新添加数据时,希望id重新从1开始计数,用以下两种方法均可:
方法一:
alter table tablename drop column id;
alter table tablename add id mediumint(8) not null primary key auto_increment first;
方法二:
alter table tab ......