类似于图书数据库
有一张表放的是作者的信息
有一张表放的是书的信息
一个作者可以有好几本书,一本书也可以有好几个作者
把作者的ID和书的ID拿出来当外键,做了张rel_book_author的表记录对应关系
现在将数据导入后,最后张表有300W的记录。
每次查询一个作者写了哪几本书,SQL语句用的是这样的SELECT bookId FROM rel_book_author WHERE authorId =
现在查询速度约为0.05秒,虽然很快了,但是我要在做一个算法要进行大量这样的查询,大约1-2W次查询吧。所以累加起来就很慢了。
不知道应该怎么优化?
是优化MySQL 还是换个更快的数据库?有没有什么好的建议?或者什么地方的设置可以改进
有一张表放的是作者的信息
有一张表放的是书的信息
一个作者可以有好几本书,一本书也可以有好几个作者
把作者的ID和书的ID拿出来当外键,做了张rel_book_author的表记录对应关系
现在将数据导入后,最后张表有300W的记录。
每次查询一个作者写了哪几本书,SQL语句用的是这样的SELECT bookId FROM rel_book_author WHERE authorId =
现在查询速度约为0.05秒,虽然很快了,但是我要在做一个算法要进行大量这样的查询,大约1-2W次查询吧。所以累加起来就很慢了。
不知道应该怎么优化?
是优化MySQL 还是换个更快的数据库?有没有什么好的建议?或者什么地方的设置可以改进
rel_book_author(authorId,bookid) 如果你有索引(authorId) 或者索引 (authorId,bookid) 的话,则你这条语句应该就已经优化到头了。没什么再优化的余地了。建议检查一下Mysql的系统参数看看能不能优化一下mysql数据本身,比如CACHE,KEY , TABLE CACHE等。否则就建议换数据库了。
如果你没有这两个索引,只有(bookid,authorId)则可以创建一个(authorId,bookid)的索引。
show index from tableName;mysql> show index from t1;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| t1 | 0 | PRIMARY | 1 | id | A | NULL | NULL | NULL | | BTREE | |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
1 row in set (0.25 sec)mysql>
换数据库的话应该换怎么样的数据库?
这个很难讲了。其实感觉上任何一种数据库对这个简单的查询来说都差不多,加大内存,加快CPU,加多CPU。这样可以用oracle
-------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Col
lation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+------------------+------------+-------------+--------------+-------------+----
-------+-------------+----------+--------+------+------------+---------+
| rel_book_author | 1 | FK_bookID | 1 | bookID | A
| 3109401 | NULL | NULL | | BTREE | |
| rel_book_author | 1 | FK_authorID | 1 | authorID | A
| 1554700 | NULL | NULL | | BTREE | |
+------------------+------------+-------------+--------------+-------------+----
-------+-------------+----------+--------+------+------------+---------+
2 rows in set (0.28 sec)看了下,不知道这样建对不对?