这可能是一个非常愚蠢的问题,但是在索引数据库表中的布尔字段会有很多好处吗?
给定一个常见的情况,比如被标记为非活动的"软删除"记录,因此大多数查询都包括在内WHERE deleted = 0,是否有助于将该字段单独编入索引,或者是否应将其与其他常用搜索字段组合在一起.不同指数?
如果我在laravel 4.2(数据库是mysql)中使用软删除,那么每个雄辩的构建查询都有WHERE deleted_at IS NULL.没有索引deleted_at.
那么,Laravel的"soft_delete"是否需要MySQL的索引?
如果列的类型为int,是否仍需要编制索引以使选择查询运行得更快?
SELECT *
FROM MyTable
WHERE intCol = 100;
Run Code Online (Sandbox Code Playgroud) 我有一个Postgres表,其中有2600万行,我想添加一个索引的布尔列。
有没有一种方法可以计算出要在生产中尝试这种操作之前需要花费多长时间?
这是我遇到的一个令人困惑的问题:
Query:
EXPLAIN SELECT id,hostname FROM queue_servers WHERE live=1
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE queue_servers ALL live NULL NULL NULL 6 Using where
Run Code Online (Sandbox Code Playgroud)
Query:
EXPLAIN SELECT id,hostname FROM queue_servers WHERE live=0
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE queue_servers ref live live 1 const 1
Run Code Online (Sandbox Code Playgroud)
SHOW INDEXES FROM queue_servers
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type
queue_servers 1 live 1 live A 6 NULL …Run Code Online (Sandbox Code Playgroud) indexing ×5
mysql ×4
database ×2
sql ×2
eloquent ×1
innodb ×1
laravel ×1
optimization ×1
postgresql ×1