› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
Jack
V2EX  ›  MySQL

Copying to tmp table 问题求解。。。

  •  
  •   Jack · Jul 15, 2014 · 5965 views
    This topic created in 4466 days ago, the information mentioned may be changed or developed.
    MYSQL查询语句:

    SELECT t_ID,t_date_last,t_content,sub_ID,sub_name,u_name,u_pic FROM t1,sub2,user3 WHERE t_type = 't' AND t_status = '0' AND t_sid = sub_ID AND u_ID = t_user ORDER BY t_date_last DESC LIMIT 30

    从三个表里读取数据,t1表共 100768 行32.5 MB,sub2表共 1055 行939.1 KB,user3表共 10696 行1.2 MB

    查询花费 1.8137 秒 其中 Copying To Tmp Table 1.7 s

    尝试了tmp_table_size=209715200 无效

    t_type t_status t_sid sub_ID u_ID t_user t_date_last 全部索引。。。

    主机是Linode 1024

    求解~~~
    8 replies  •  2014-07-18 23:30:17 +08:00
    noahzh
        1
    noahzh  
       Jul 15, 2014
    因为你使用了order by.
    去掉order by 会好很多
    而且,你的索引重复度会特别高,索引已经没有意义了.
    Jack
        2
    Jack  
    OP
       Jul 15, 2014
    @noahzh 确实快了。。。。但是排序的问题没法解决啊。。。 :(
    SoloCompany
        3
    SoloCompany  
       Jul 15, 2014 via Android
    用desc来找问题啊
    Jack
        4
    Jack  
    OP
       Jul 16, 2014
    @SoloCompany 啊?~~ 怎么整呢。。。
    yangqi
        5
    yangqi  
       Jul 17, 2014 via Android
    @Jack 把explain贴出来
    Jack
        6
    Jack  
    OP
       Jul 17, 2014
    @yangqi 这里。。。求帮助~~

    id select_type table type possible_keys key key_len ref rows Extra
    1 SIMPLE sub2 ALL PRIMARY NULL NULL NULL 1055 Using temporary; Using filesort
    1 SIMPLE t1 ref t1_sid,t1_user,t1_status,t1_user_2,t1_user_3,t1_user_4 t1_sid 8 database.sub2.sub_ID 11 Using where
    1 SIMPLE user3 eq_ref PRIMARY PRIMARY 8 database.t1.t1_user 1
    yangqi
        7
    yangqi  
       Jul 17, 2014
    explain下面的语句, 多表查询最好用join, 你那种select where是很老的用法, mysql优化器不一定能正确使用索引

    SELECT t.t_ID,t.t_date_last,t.t_content,t.sub_ID,s.sub_name,u.u_name,u.u_pic FROM t1 t
    LEFT JOIN sub2 s ON s.sub_ID=t.t_sid
    LEFT JOIN user3 u ON u.u_ID=t.t_user
    WHERE t_type = 't' AND t_status = '0'
    ORDER BY t.t_date_last DESC
    LIMIT 30
    Jack
        8
    Jack  
    OP
       Jul 18, 2014
    @yangqi 貌似速度确实有提示,感谢!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2875 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 03:04 · PVG 11:04 · LAX 20:04 · JFK 23:04
    ♥ Do have faith in what you're doing.