建了一张测试表
create table 'test' (
   id  int(11) not null auto_increment,
   name varchar(25),
   primary key(id),
   key 'name_index' (name)
) engine=InnoDB DEFAULT charset=utf8很简单,二个字段,一个主键,一个索引(MYSQL中默认是不是BTREE??)现在的问题是,插入10条数据,使用
select * from test s
查询,结果显示10条数据,然后再使用
truncate table test
清空表,再使用
select * from test s
发现数据居然还在,但是使用select * from test 就没有,难道s这个别名还有缓存作用?如何解决 这个问题咧?谢谢。。

解决方案 »

  1.   

    WIN环境:Server version: 5.1.30-community-log MySQL Community Server (GPL)
      

  2.   

    很简单,二个字段,一个主键,一个索引(MYSQL中默认是不是BTREE??)如无特殊设置,INNODB中的索引是格式是BTREE
      

  3.   

    你的操作是在同一个SESSION中吗? 还是在不同的SESSION中?建议你直接用命令行测试,然后贴出你的测试步骤和结果。
      

  4.   

    感谢楼上。用的是MYSQL GUI客户端,且是那种最老式的mysql gui tools,不是workbench.
    开了几个标签页而已。就算是关了标签页,再打开新的标签页也是有这种情况。
      

  5.   

    5.1.50-log
    我的版本,测试环境也与你一样,MYSQL GUI TOOLS
    建议升级你的版本本,可能是BUG
      

  6.   

    那你是用了不同的SESSION。 这其中可能会有一个事务提交和事务隔离的问题。建议你在同一个窗口中进行。 
    另外做测试最好是在命令行中进行。
      

  7.   

    基本可以确定是mysql gui tools的BUG,在CMD中没有此现象。
      

  8.   

    一般的引擎默认就是b-tree 也一般只支持b-treeMemory之类的引擎才支持哈希 而且以哈希索引作为默认你的缓存假设是不成立的 试试在一个session下进行测试
      

  9.   


    create table 'test' (
      id int(11) not null auto_increment,
      name varchar(25),
      primary key(id),
      key 'name_index' (name)
    engine=InnoDB DEFAULT charset=utf8 存储类型为什么不用 MyISAM 呢