嗨,我很好奇为什么当数据行大到100时索引不起作用。
这里选择10个数据:
mydb> explain select * from data where user_id=1;
+-----------------------------------------------------------------------------------+
| QUERY PLAN |
|-----------------------------------------------------------------------------------|
| Index Scan using ix_data_user_id on data (cost=0.14..8.15 rows=1 width=2043) |
| Index Cond: (user_id = 1) |
+-----------------------------------------------------------------------------------+
EXPLAIN
这里选择100个数据:
mydb> explain select * from data where user_id=1;
+------------------------------------------------------------+
| QUERY PLAN |
|------------------------------------------------------------|
| Seq Scan on data (cost=0.00..44.67 rows=1414 width=945) |
| Filter: (user_id = 1) |
+------------------------------------------------------------+
EXPLAIN
当数据行为100时,索引如何工作?
答案 0 :(得分:4)
100不是大量数据。考虑10,000或100,000行可观的数量。
简单地说,表中的记录存储在数据页上。数据页通常有大约8k字节(取决于数据库和设置)。索引的主要目的是减少需要读取的数据页的数量。
如果表中的所有记录都适合一页,则无需减少正在读取的页数。将读取一页。因此,该指数可能不是特别有用。