where条件对mysql多列索引的使用
MySQL手册中看到的,记录下。
MySQL可以为多个列创建索引。一个索引可以包括15个列。对于某些列类型,可以索引列的前缀(参见7.4.3节,“列索引”)。
多列索引可以视为包含通过连接索引列的值而创建的值的排序的数组。
MySQL按这样的方式使用多列索引:当你在WHERE子句中为索引的第1个列指定已知的数量时,查询很快,即使你没有指定其它列的值。
假定表具有下面的结构:
CREATE TABLE test (
id INT NOT NULL,
last_name CHAR(30) NOT NULL,
first_name CHAR(30) NOT NULL,
PRIMARY KEY (id),
INDEX name (last_name,first_name)
);
name索引是一个对last_name和first_name的索引。索引可以用于为last_name,或者为last_name和first_name在已知范围内指定值的查询。因此,name索引用于下面的查询:
SELECT * from test WHERE last_name='Widenius';
SELECT * from test
WHERE last_name='Widenius' AND first_name='Michael';
SELECT * from test
WHERE last_name='Widenius'
AND (first_name='Michael' OR first_name='Monty');
SELECT * from test
WHERE last_name='Widenius'
AND first_name >='M' AND first_name < 'N';
然而,name索引不用于下面的查询:
SELECT * from test WHERE first_name='Michael';
SELECT * from test
WHERE last_name='Widenius' OR first_name='Michael';
相关文档:
各位高手好。小弟学习JAVA不久,然后再用MYSQL数据库。
由于是用别人的的范例学习,所以出现很多奇怪的问题
我用自己的MYSQL 服务器,然后把别人的数据库导进来。然后出现版本问题。
问题如下
Table './db_librarysys/tb_manager' was created with a different version of MySQL and cannot be read
2010-4-28 22:44 ......
这里是使用ODBC来转换数据库的。
1.安装mysql数据库的ODBC驱动,mysql官网有下载http://dev.mysql.com/downloads/connector/odbc/
2.打开控制面板\管理工具\数据源ODBC,在用户DSN中添加一个MySQL ODBC 数据源。
3.接着在下面的窗体中输入数据源名称,如mysqlodbc;然后输入服务器Server地址(localhost或其他),用户Us ......
这里收集各种Mysql的基础知识,为了某些场合的需要,还是舍弃navicat之类的工具乖乖用命令行吧
(注意有的命令需要分号有的不需要)
一.基本操作
1.登录
mysql -u 用户名 -p密码 数据库名
这里需 ......
在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。
MySQL中的UNION
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如 ......
导出
select field1,field2,field3 from tablename into outfile '/home/output1.csv' fields terminated by ','optionally enclosed by ''lines terminated by '\n';
导入
load data local infile '/home/output1.csv' into table tablename fields terminated by ','lines terminated by '\n'(field1,f ......