日期:2014-05-16  浏览次数:20874 次

mysql 语句优化
我有一个innodb表,有50万条数据。
一共有2个列。

suijima[varchar(12)]
shiyong[int(1)]

alter table `c_table` add index new_index (shiyong)

suijima表列储存12个单词字母组成的不重复的数据,shiyong默认值为0,如果 suijima 被使用,则update shiyong值为1

表列内容如下

suijima shiyong  
1urjoldjJhq12 0
KlnY78Frgjsa 0
... ...

SELECT * FROM `c_table`
WHERE shiyong = '0'
LIMIT 0,1


大约需要0.8秒钟,如何把查询时间升级到0.00几秒的级别?谢谢。

------解决方案--------------------
没用过mysql,不过50万条记录,0.8秒好像有点慢.

用explain看看index确实起作用了:

EXPLAIN SELECT * FROM `c_table`
WHERE shiyong='0'
LIMIT 0,1

另外, 为什么用"shiyong='0'", 而不是"shiyong=0"?

shiyong的类型改为BOOLEAN有没有用?


除此之外,你的table很简单,也没什么可能采取的手段.
------解决方案--------------------
探讨

引用:
shiyong的类型改为BOOLEAN有没有用?

怎么改成BOOLEAN?现在是btree.