mysql - 如何处理mysql表中的大量行

标签 mysql sql

我有一个像 comment 这样的表,有 100k 行以上,并且它每天都在增加

我经常需要从这个表中选择记录

+----+---------+-------
| id | comment | type |
+----+---------+------+
| 1    aaa       photo|
| 2    bbb       phono|
| 3    ccc       video|
| 4    ddd       video|
| 5    eee       story|
 ...   ...       ...

如果我创建除1个表之外的3个表,是否会更快?

作为

comment_photo
+----+---------+
| id | comment |
+----+---------+
| 1    aaa     |
| 2    bbb     |
 ...   ...    


comment_video
+----+---------+
| id | comment |
+----+---------+
| 1    ccc     |
| 2    ddd     |
 ...   ...   


comment_story
+----+---------+
| id | comment |
+----+---------+
| 1    eee     |
| 2    fff     |
 ...   ...   

最佳答案

制作表格comment_photocomment_video并不是一个好主意。如果您将来有其他类型怎么办?下一张 table ?

添加表comment_type会更好:

+----+--------+
| id | name   |
+----+--------+
| 1    photo  |
| 2    video  |
| 3    story  |
 ...   ...    

然后将comment更改为:

+----+---------+---------
| id | comment | type_id |
+----+---------+---------+
| 1    aaa       1       |
| 2    bbb       1       |
| 3    ccc       2       |
| 4    ddd       2       |
| 5    eee       3       |
 ...   ...       ...

还要记住精心计划的索引。尝试EXPLAIN您的查询并记住 - 嵌套循环是您的敌人。

关于mysql - 如何处理mysql表中的大量行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23649133/

相关文章:

mysql - MYSQL中两张表的比较

php - MySQL ORDER BY 子句中的单引号

如果值不存在,MySQL 返回 set

sql - 选择给定条件的最大日期

sql - ORACLE SQL - 创建表时的数据类型无效

mysql - mysql中递归一对多的多对多关系是否需要至少4个表?

php - 使用 Yii CActiveDataProvider 时如何将 2 个模型与关系连接起来

mysql - mySQL 中两个表的内连接

Spark中Mysql数据处理

mysql - Crystal 报告:change table name at runtime (jsp code)