MYSQL中 select * from table1 t1, table2 t2 where t1.name= t2.name

name是中文,表数据1万多条,查一下要15秒,怎么解决效率问题?
2024-11-23 06:02:49
推荐回答(3个)
回答1:

如果能更改表结构:

1、增加一个表table3,字段为id,name,主键id

2、table1、table2分别增加一个外键字段nameid,来自于table3的id

3、 select * from table1 t1, table2 t2 where t1.nameid= t2.nameid

比如t1中有name值为a,然后t2中有name值a跟b,当t1值比较t2值时,a=a数据不输出,a=b数据输出,表与表关联,关联条件时中的值是要全部进行匹配的。

应用环境

与其他的大型数据库例如 Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQL是开放源码软件,因此可以大大降低总体拥有成本。

以上内容参考:百度百科-mySQL

回答2:

如果能更改表结构:
1、增加一个表table3,字段为id,name,主键id
2、table1、table2分别增加一个外键字段nameid,来自于table3的id
3、 select * from table1 t1, table2 t2 where t1.nameid= t2.nameid
如果不能修改表结构:
1、两个表都增加索引,name
2、也可以通过程序来搞定,例如php,把两个表中的数据分别存放入两个数组,然后依据name组装数组

回答3:

感觉你要查询所有的数据,没有什么可以解决效率的,你可以建立索引