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 · 5636 views
    This topic created in 4327 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   ·   Solana   ·   1389 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 17:12 · PVG 01:12 · LAX 10:12 · JFK 13:12
    ♥ Do have faith in what you're doing.