Chinaunix首页 | 论坛 | 博客
  • 博客访问: 60831
  • 博文数量: 16
  • 博客积分: 354
  • 博客等级: 一等列兵
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-14 18:00
文章分类

全部博文(16)

文章存档

2012年(1)

2011年(15)

分类: Mysql/postgreSQL

2012-01-16 09:34:58

表结构如下:

mysql> show create table tag_item_list\G
*************************** 1. row ***************************
       Table: tag_item_list
Create Table: CREATE TABLE `tag_item_list` (
  `tag_item_list_id` bigint(20) unsigned NOT NULL auto_increment,
  `tag_id` bigint(20) unsigned NOT NULL,
  `item_type` bigint(20) unsigned NOT NULL,
  `item_id` varchar(100) NOT NULL,
  `list_id` bigint(20) unsigned NOT NULL,
  `deleted` tinyint(1) NOT NULL,
  `item_ext1` bigint(20) NOT NULL default '0',
  `item_ext2` bigint(20) NOT NULL default '0',
  `item_ext3` bigint(20) NOT NULL default '0',
  `relation_ext1` bigint(20) NOT NULL default '0',
  `relation_ext2` bigint(20) NOT NULL default '0',
  `relation_ext3` bigint(20) NOT NULL default '0',
  PRIMARY KEY  (`tag_item_list_id`),
  KEY `idx_iid_itp` (`item_id`,`item_type`),
  KEY `idx_tid_itp` (`tag_id`,`item_type`)
) ENGINE=InnoDB AUTO_INCREMENT=231210 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC
1 row in set (0.00 sec)
 

索引字段上有发生int到varchare、varbinary的类型转换,不会使用到索引


mysql> explain  SELECT sql_no_cache * from tag_item_list where item_id = 122 and item_type = 1 ; 
+----+-------------+---------------+------+---------------+------+---------+------+--------+-------------+
| id | select_type | table         | type | possible_keys | key  | key_len | ref  | rows   | Extra       |
+----+-------------+---------------+------+---------------+------+---------+------+--------+-------------+
|  1 | SIMPLE      | tag_item_list | ALL  | idx_iid_itp   | NULL | NULL    | NULL | 231852 | Using where |
+----+-------------+---------------+------+---------------+------+---------+------+--------+-------------+
1 row in set (0.00 sec)

mysql> explain  SELECT sql_no_cache * from tag_item_list where item_id = '122' and item_type = 1 ;
+----+-------------+---------------+------+---------------+-------------+---------+-------------+------+-------------+
| id | select_type | table         | type | possible_keys | key         | key_len | ref         | rows | Extra       |
+----+-------------+---------------+------+---------------+-------------+---------+-------------+------+-------------+
|  1 | SIMPLE      | tag_item_list | ref  | idx_iid_itp   | idx_iid_itp | 310     | const,const |    1 | Using where |
+----+-------------+---------------+------+---------------+-------------+---------+-------------+------+-------------+
1 row in set (0.00 sec)
 

而如在索引字段上发生varchar向int的类型转化,仍然会使用到索引

mysql> show create table tag_item_list\G
*************************** 1. row ***************************
       Table: tag_item_list
Create Table: CREATE TABLE `tag_item_list` (
  `tag_item_list_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `tag_id` bigint(20) unsigned NOT NULL,
  `item_type` bigint(20) unsigned NOT NULL,
  `item_id` int(10) NOT NULL,
  `list_id` bigint(20) unsigned NOT NULL,
  `deleted` tinyint(1) NOT NULL,
  `item_ext1` bigint(20) NOT NULL DEFAULT '0',
  `item_ext2` bigint(20) NOT NULL DEFAULT '0',
  `item_ext3` bigint(20) NOT NULL DEFAULT '0',
  `relation_ext1` bigint(20) NOT NULL DEFAULT '0',
  `relation_ext2` bigint(20) NOT NULL DEFAULT '0',
  `relation_ext3` bigint(20) NOT NULL DEFAULT '0',
  PRIMARY KEY (`tag_item_list_id`),
  KEY `idx_itemid_type` (`item_id`,`item_type`),
  KEY `idx_tayid_type` (`tag_id`,`item_type`)
) ENGINE=InnoDB AUTO_INCREMENT=226322 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC

mysql> explain  SELECT sql_no_cache * from tag_item_list where item_id = '122' and item_type = 1 ;
+----+-------------+---------------+------+-----------------+-----------------+---------+-------------+------+-------+
| id | select_type | table         | type | possible_keys   | key             | key_len | ref         | rows | Extra |
+----+-------------+---------------+------+-----------------+-----------------+---------+-------------+------+-------+
|  1 | SIMPLE      | tag_item_list | ref  | idx_itemid_type | idx_itemid_type | 12      | const,const |    1 |       |
+----+-------------+---------------+------+-----------------+-----------------+---------+-------------+------+-------+

测试mysql版本 5.0.51b,5.1.45

阅读(2626) | 评论(0) | 转发(0) |
0

上一篇:数据库表涉及-逻辑删除

下一篇:没有了

给主人留下些什么吧!~~