今天被问了一个问题:千万量级的数据库,如果想在规定时间内返回,比如十几秒,有什么方法?
这问题太高深,我的常见做法就是尽量优化,优化完了还慢就没办法了,这还制定了返回时间,啥么歌意思,请高手指点一下

解决方案 »

  1.   

    1. 首先要承认,不可以对所有的查询实现这个目标,比如 select * from xxx什么 where 条件都没有。 优化只能针对于特定的查询而言。
    2。根据你的最常用的SQL语句分析,然后可以使用如下方法。 - 添加索引
     - 使用分区表
     - 对某些汇总查询,进行物化,比如把每月的统计数据先准备好,然后直接使用。
     - ...
      

  2.   

    千万级,第一次select ,客观的说基本不可能,优化也没用,在前端去做调整吧
      

  3.   

    比如就是google百度那样的搜索,要在零点几秒内返回结果之类的
      

  4.   


    用主键作为条件查询一条记录: Select we_id,title,catalog,des,url,img,price from goods where we_id='1000000',例子:http://www.dfwgw.com/dGFva2Uvc2hvdy5odG1sP215aWQ9MTMxMzA1NA==url.html用主键作为条件分页:
    select SQL_BUFFER_RESULT * 
    from goods g INNER JOIN 
    ( select id as my_id from 
    ( select id from goods 
    order by id desc limit 0,100
    ) as tmp
    ) as temp 
    ON my_id=id注意这个子查询
    select id from goods order by id desc limit 0,100
    不要在这儿用
    select * from goods order by id desc limit 0,100
    例子:http://www.dfwgw.com/dGFva2UvbGlzdF9hbGwuaHRtbA==url.html全文搜索:
    方法:
    http://www.sqlserver.com.cn/c2l0ZS9zaG93Lmh0bWw_bXlpZD0zODI5Nw==url.html
    http://www.sqlserver.com.cn/c2l0ZS9zaG93Lmh0bWw_bXlpZD00Mzg4NQ==url.html
    例子:http://www.findao.cn/ZmluZGFvL2YuYXNwP3E9VDQyODgr5peX6Iiw54mIurl.html
      

  5.   

    SQL优化最快和最少两个原则最快:
    1、使用主键作为条件
    2、使用唯一的索引作为条件
    3、使用整数(或时间)类型的索引作为条件
    4、使用定长的列索引作为条件最少:
    缩小查询范围
    用 select id 等代替 select *
    用查询先找出最少的主键:select id from goods order by id desc limit 0,100