我有A,B两张表。
A表有字段ID,A1,A2,A3....(2000W数据,没有主键,索引是ID)
B表有字段ID,B1,B2,B3....(2000W数据,没有主键,索引是ID)
B里面的ID都来自A里面的ID,但B里面的ID可能重复,有2,3的情况。现在我关联两张表查询语句如下:
select count(*)
from A,B
where A.ID = B.ID居然用了8个小时,这正常吗?
如果正常的话,怎么能调高查询效率。
A表有字段ID,A1,A2,A3....(2000W数据,没有主键,索引是ID)
B表有字段ID,B1,B2,B3....(2000W数据,没有主键,索引是ID)
B里面的ID都来自A里面的ID,但B里面的ID可能重复,有2,3的情况。现在我关联两张表查询语句如下:
select count(*)
from A,B
where A.ID = B.ID居然用了8个小时,这正常吗?
如果正常的话,怎么能调高查询效率。
解决方案 »
- MySQL如何关联两个表项
- postgresql 远程连接的命令?
- 求统计活跃用户数sql
- 有关数据库的一些菜问题,答上来就给分。
- MYSQL的字段完全书写格式问题,假设库为TEST 表名为ADMIN 语句可以写成select % from test.admin 如果再进一步要导出字段中的数据,假设字段有一个NAME,是写成像name.test.admin test.admin.na
- APPSERV 如何禁止远程访问 phpMyAdmin
- mysql里有没有DateDiff()函数?
- 刚下了一个mysql 5.0 安装完成后,用 mysql-front 无法登录?
- Mysql5.0.0-alpha用MysqlCC插入记录时总是提示Table xx.1 doesn't exist
- 我的疑惑:这是怎么实现的?
- Mysql一次性插入多少条记录最优
- mysql文件导入问题
EXPLAIN select count(*)
from A,B
where A.ID = B.ID贴结果
from A,B
where A.ID=B.id
贴出执行计划
普通的开发机器
CPU:i52400 3.1G
内存4G
+----+-------------+-------+------+----------------+----------------+---------+---------------------
| 1 | SIMPLE | A | ALL | NULL | NULL | NULL | NULL
| 1 | SIMPLE | B | ref | index_uniqueID | index_uniqueID | 153 | databasename.A.uniqueID
A表的主键好说,可以用ID,因为ID不重复,
B表中主键是个问题啊,ID有可能重复。A表和B表的ID几乎一样,2000W的数据量估计会有1W的不一样,不过这不是大问题吧?
SHOW INDEX FROM a
貌似是这个问题,我刚发现A的索引居然没有ID。
from A,B
where A.ID=B.id
from A,B
where A.ID=B.id+----+-------------+-------+-------+----------------+----------------+---------+----------------------+----------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+----------------+----------------+---------+----------------------+----------+--------------------------+
| 1 | SIMPLE | A | index | index_uniqueID | index_uniqueID | 452 | NULL | 18364876 | Using index |
| 1 | SIMPLE | B | ref | index_uniqueID | index_uniqueID | 453 | db.a.uniqueID | 1 | Using where; Using index |
+----+-------------+-------+-------+----------------+----------------+---------+----------------------+----------+--------------------------+--+----------------+---------+----------------------+----------+--------------------------+
结果如下+----------+
| count(*) |
+----------+
| 18364876 |
+----------+
1 row in set (10 min 41.09 sec)这正常吗?
结果如何
ccf5d652-26eb-4692-a4ae-8ceafd9ca663
fcd16e39-42c1-460a-a38a-7f18828cc5dd
af370e48-b974-4c78-b0ac-48aad84747df
这样会对 A.ID=B.id 的判断产生很大的影响吗?
比如我简单的把ID搞成字增或者纯数字会不会又能提高不少效率啊,各位亲