当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后多这些表运行查询
我想问下该如何处理通过临时表进行数据的处理和优化。。各位朋友能否举一个实际的例子。。

解决方案 »

  1.   

    如果直接处理的化会被很多以后需要的数据给处理掉 --------------
    这个怎么会呢,你可以对新的数据进行update或insert处理就行了嘛
      

  2.   

    mysql 默认查询数据是先读取数据到内存中 当数据量大于mysql自定义的read_buffer_size时候会采用临时表封装数据这个采用不采用临时表关于效率的问题很有研究 
      

  3.   

    现在处理的得到需要的数据,以后会需要别的数据内容 所有不能在原表UPDATE或者INSERT,必须建立个多个临时表来进行处理得到所需要的数据 比如 我知道某个人的身份证 通过语句可以判断出他的年龄之类的。
     我想通过你们给我的例子进行优化处理 郁闷啊  公司急着要数据 我这边又卡到了
      

  4.   

    mysql> create temporary table a as select * from user;
    Query OK, 9 rows affected (0.22 sec)
    Records: 9  Duplicates: 0  Warnings: 0
    mysql> create temporary table aa as select username,t.* from user,t;
    Query OK, 0 rows affected (0.05 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    mysql> insert into  a(username) values('fd');
    Query OK, 1 row affected (0.02 sec)
    临时表和正常表一样 不知道你需要什么样的例子
      

  5.   

    create temporary table tempTbl as select id,name from user where id<10;
      

  6.   

    省份  市   区  路段 这个不是临时表的问题,关键是怎么从你的地址中把这些信息提取出来。需要分析你的数据了, 如果只是这种格式 "江西省南昌市西湖区北京东路XX号" 则可以通过这几个字来进行字符串分析处理,但如果有 "新疆维吾尔自治区XX市XX区XX“ 或者说”北京市海淀区XXX“ 则比较麻烦了。
      

  7.   

    如果是这样
     "新疆维吾尔自治区XX市XX区XX“ 或者说”北京市海淀区XXX“ 没以你目前的表结构设计,没有办法。方法1。 改表结构,添加字段落( 省份  市   区  路段)
    方法2。去网上想办法找一个全国 (省份  市   区)的表,然后可以精确和你的现在表内的地址进行对比, where 地址 like concat(省份,市, 区)
      

  8.   

    create table addr(
    pro varchar(20),
    city varchar(100),
    region varchar(50));create table address(
    address varchar(255));select * from address where address like concat(pro,city,region);
    这样进行分类?
      

  9.   

    只依靠你现有的表中数据无法处理。北京市海淀区XXX这种情况则比较困难,除非你先有一个全国 省名的列表,则可以把省名去掉,但区名则没有办法。
      

  10.   

    我可不可以删除字段里面内容的几个字符 ?比如 地址
          江西省南昌市西湖区XXX号 我想删除 XXX号变成 江西省南昌市西湖区。
               
      

  11.   

    http://www.cnblogs.com/ashun/archive/2007/04/12/idcard-areacode.html
    身份证号码前六位所代表的省,市,区, 以及地区编码下载如果你已经有和身份证号码,则可以在GOOGLE找一下 身份证号码 地区代码
      

  12.   

    我可不可以删除字段里面内容的几个字符 ? 比如 地址 
          江西省南昌市西湖区XXX号 我想删除 XXX号 变成 江西省南昌市西湖区。 
               
      

  13.   

    mysql> select left('江西省南昌市西湖区XXX号',instr('江西省南昌市西湖区XXX号','区')+1);
    +-------------------------------------------------------------------------+
    | left('江西省南昌市西湖区XXX号',instr('江西省南昌市西湖区XXX号','区')+1) |
    +-------------------------------------------------------------------------+
    | 江西省南昌市西湖区                                                      |
    +-------------------------------------------------------------------------+
    1 row in set (0.08 sec)mysql>
      

  14.   

    张表 : 姓名  地址                      身份证              性别  
              老陈  南昌市西湖区北京西路XXX号  360104198708183823  男 
    我需要他成为 一个这样的表    姓名 年龄段  市  区 性别 其中 年龄段是这样分的 1:18岁以下 2:18-24 3: 25-35 4:35以上 
    性别 1: 男 2:女 
    -------------------------------- 
    姓名 直接查询 年龄段你可以单独建一个表 flag floordate ceildate 
    对于年龄的查询也可以 
    SQL codemysql> select substring(right(130681198701254965,12),1,8); 
    +---------------------------------------------+ 
    | substring(right(130681198701254965,12),1,8) | 
    +---------------------------------------------+ 
    | 19870125                                    | 
    +---------------------------------------------+ 
    1 row in set (0.02 sec) 对于市区就截取字符串 
    不明白这是什么意思,最好能详细点, 那个年龄段也能举个例子么?