描述:
使用参数查询数据库得到所要的记录,参数的个数是变化的
比如说id,name,time,参数不等,可能就有一个id,可能有id,name搜索出结果,
但是不能使用select * from info where id='$id' and name='$name'等等 说这个10w的数据就会变慢。我现在脑子里没有思路,请高手帮忙。

解决方案 »

  1.   

    那就是如何写SQL语句了,不能用=,能用LIKE不?
      

  2.   

    就是说尽量不要select * ?有什么字段参数就具体select什么字段?
      

  3.   

    判下哪些为空然后不为空的select呗
      

  4.   

    像LZ的这种情况一般都是先用php处理出一个符合要求的sql语句,然后再进mysql执行,如果非要用SQL进行这种参数的判断我只能说出题的人脑子有问题。
      

  5.   

    不是,他的意思应该是不能用 and 拼接 条件。就是说id='$id' and name='$name' 这个是不行的。
      

  6.   

    select *  我也知道优化,关键就是where 句子里面不能用and连接
      

  7.   

    是不是用PHP判断 ID,name,time,判断结束后形成相应的SQL语句
    表加索引,可以的话用联合索引
    SQL语句不用AND,那用什么?
      

  8.   

    意思很明了,就是说不要每次查询都select * 而是要select id from或者 select name from
    取一部分比取全部速度快;
    先判断,再构造SQL语句,有啥查啥;字段越多, and后面的条件就多
      

  9.   

    ls 有点到点子上了,讲真的这道题,除了索引我也没想到其他方法了。用索引还是用到了select * from info where 字段=‘值’ and  什么的吧,最多速度快一些。把我头想通了,也没想出来。
      

  10.   

    并不是like ,题目好长,我只是把要点打出来了id int 这个要用完全匹配
    name varchar(255) 这个要用模糊匹配
    time datetime 这个是时间段匹配后面还有些字段(省略。。),所以我严重怀疑里面有会php的没有。题目上已经讲了的很清楚了.所以我排除你3楼讲的。
      

  11.   

    大体意思就是:
    搜索功能,多个条件的。用这样的语句“select * from info where id='$id' and name='$name'”他说性能不好不给用。
      

  12.   

    select * from info where id='$id' and name='$name' 性能不好只能是因为你select *了,只要where后id或者name其中之一为索引,则不存在这样用就性能不好的问题。
      

  13.   

    select * from info where id='$id' and name='$name'用不用*区别不明显后面不用and,不知它是如何查询的至于优化,有很多种,估计出题那都不一定弄明白标准的sql有优化专门一章
      

  14.   

    name模糊匹配,用=号是不行的,可以用POSITION内置函数或者like或者全文搜索
    datatime时间段匹配,可以分析一下,时间段,多利用mysql内置时间函数and语句肯定是要用的多个条件查询,不用and只能用子查询,也就是说在查询出的条件里进行二次查询,感觉出问题的也不是很懂,呵呵.
      

  15.   

    "="都不能 LIKE肯定更不能
    我觉得应该查出适合一个特定参数进行处理   
    在进行指定查询