请教一个关于mysql排序 很耗时的问题
表是:CREATE TABLE `pkt_item` (
`item_id` bigint(20) NOT NULL AUTO_INCREMENT,
`kind_id` bigint(20) DEFAULT NULL,
`item_name` varchar(255) NOT NULL,
`name_number` int(11) NOT NULL,
`picture` varchar(255) NOT NULL,
`description` text,
`looknum` bigint(20) DEFAULT '0',
`lastlooktime` datetime DEFAULT NULL,
PRIMARY KEY (`item_id`),
UNIQUE KEY `Index_1` (`item_id`),
KEY `Index_3` (`lastlooktime`),
KEY `Index_2` (`kind_id`),
KEY `ItemName_Index` (`item_name`),
KEY `LookNum_Index` (`looknum`),
KEY `Index_NameNumber` (`name_number`)
) ENGINE=MyISAM AUTO_INCREMENT=43213 DEFAULT CHARSET=utf8 我的语句是:
select distinct pkt_item.item_id as itemId,
pkt_item.kind_id as kindId,
pkt_item.item_name as itemName,
pkt_item.name_number as storeNumberfrom pkt_item
where item_name like '%a%' order by itemName desc
去掉排序后,速度要快很多
我要达到的目的是要排序 ,也要速度。
表是:CREATE TABLE `pkt_item` (
`item_id` bigint(20) NOT NULL AUTO_INCREMENT,
`kind_id` bigint(20) DEFAULT NULL,
`item_name` varchar(255) NOT NULL,
`name_number` int(11) NOT NULL,
`picture` varchar(255) NOT NULL,
`description` text,
`looknum` bigint(20) DEFAULT '0',
`lastlooktime` datetime DEFAULT NULL,
PRIMARY KEY (`item_id`),
UNIQUE KEY `Index_1` (`item_id`),
KEY `Index_3` (`lastlooktime`),
KEY `Index_2` (`kind_id`),
KEY `ItemName_Index` (`item_name`),
KEY `LookNum_Index` (`looknum`),
KEY `Index_NameNumber` (`name_number`)
) ENGINE=MyISAM AUTO_INCREMENT=43213 DEFAULT CHARSET=utf8 我的语句是:
select distinct pkt_item.item_id as itemId,
pkt_item.kind_id as kindId,
pkt_item.item_name as itemName,
pkt_item.name_number as storeNumberfrom pkt_item
where item_name like '%a%' order by itemName desc
去掉排序后,速度要快很多
我要达到的目的是要排序 ,也要速度。
我的itme_name不是已经有了索引了吗?为什么还要加呢?
item_name like '%a%' 基本上什么索引都用不上了。没什么好办法。
where item_name like '%a%' order by item_name desc试一下这个,这已经是最优化的了。