MYSQL使用索引导致查询变慢的例子
使用表Ta_IP 涉及字段
id int(11) 流水ID,
ip_value1 bigint(11) 数字型IP地址最小值,
ip_value12 bigint(11) 数字型IP地址最大值,
address varchar(100) IP归属地
查询语句
以下语句功能为:IP转换为数字后在ta_ip 中查找对应的地址
select address from ta_ip where ip_value1 <= 3232235885 and ip_value2 >=3232235885 limit 1
未建立索引索引
0.125秒
select address from ta_ip where ip_value1 <= 3232235885 and ip_value2 >=3232235885
0.032秒
select address from ta_ip where ip_value1 <= 3232235885 and ip_value2 >=3232235885 limit 1
建立索引后 (ip_value1,ip_value2,ip_value1+ip_value2,IP_ID)
0.125 秒(未使用到索引)
select address from ta_ip where ip_value1 <= 3232235885 and ip_value2 >=3232235885
0.328秒 (使用到ip_value1)
select address from ta_ip where ip_value1 <= 3232235885 and ip_value2 >=3232235885 limit 1
0.032秒(强制不使用索引)
select address from ta_ip Ignore index(ip_value1,ip_value2,ip_value1_2) where ip_value1 <= 3232235885 and ip_value2 >=3232235885 limit 1
不使用索引(0.032秒)比使用到索引快10倍(0.328秒) 因此更新速度从每分钟1200条下降为 每分钟150条
查询1000条 未使用索引 57.65625秒 使用索引 558.65625 秒
相关文档:
今天练习在JSP页面中实现分页效果,在查询语句方面牵扯到了top的用法。简要做一下总结:
为实现类似top的功能,我们在SQL Server中和MySQL中使用到的SQL语句是不同的。
1、在SQL Server中,我们使用 select top N * ......
[ 配置 ]
执行增量备份的前提条件是MySQL打开log-bin日志开关,例如在my.ini或my.cnf中加入 log-bin=C:/Program Files/MySQL/MySQL Server 6.0/Data/mysql-bin “log-bin=”后的字符串为日志记载目录,一般建议放在不同于mysql数据目录的磁盘上。
[ 完全备份]
假定星期日下午1点执行完全备份,适用于MyISAM ......
引言
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。
设计范式是不是很难懂呢?非也 ......
一般建模可能都会用到:powerdesigner
但是,在建表的时候,我一直没有找到:
DEFAULT CHARACTER SET
COLLATE
两个选项。因此,想了个方法,点击:工具栏-》database-》edit current DBMS
然后,选中:MYSQL50::Script\Objects\Table\Options
在options末尾添加:
ENGINE = %s : list = BDB | HEAP | ISAM | InnoDB ......