有两张表,t1和t2t1:有一个uid,还有n列,共有记录m条
t2:有一个uid,还有n列,共有记录m条那么我在执行这句的时候
select ... from t1,t2 where t1.uid = t2.uid
是不是数据库要先做两个表的乘积,然后再做选择?
也就是先生成了个m*m的表,然后再从这个m*m大小的表里做1.uid=2.uid?
也就是说速度要非线性的变慢?

解决方案 »

  1.   

    加入t1uid没有和t2的uid重复得 那么结果集是空
    在uid上有索引得情况下不会慢
      

  2.   

    先读三遍《数据库系统概论(第四版)》 王珊 萨师煊   高等教育出版社 (掌握基础知识和概念) 然后再粗略浏览一遍MYSQL的官方手册。(方便以后查找,避免类似于考试的时候,给你本政治书也不知道答案在第几章,第几页)MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
    建议先看概论中的优化部分,然后再看手册中的优化部分。
      

  3.   

    如果那样的话,oracle之类的数据库也该免费了。
      

  4.   

    t1:有一个uid,还有n列,共有记录m条
    t2:有一个uid,还有n列,共有记录m条select ... from t1,t2 where t1.uid = t2.uidmysql支持嵌套循环的方式
    首先取t1表中的一行数据到t2中进行比对,循环遍历t1表中所有的数据,知道结束!优化只需要在 t2.uid上建索引即可!