我不知道提取自动字符串以在文件中翻译的方法。 例如,你已经进入了你的布局并查看了一些echo $this->translate('my_string'); 我想用比较数组创建文件'en_US.php','fr_FR.php','es_ES.php': 可能吗 ? 谢谢 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我们有一个带有时间戳字段created_at
的Postgres表。 定期地,我们需要找到所有记录,其中created_at
的day字段是某个数字。
我们可以像这样运行查询
select * from table where extract(day from created_at) = 3;
我怀疑这效率不高,即正在执行全表扫描。 如果是这样,我可以通过某种方式创建索引以使上述效率更高吗?
如果不可能,我们可以创建一个单独的列,称为created_at_day
并在其上创建索引。
所以我们可以像这样简单地运行查询
select * from table where created_at_day = 3;
假设created_at
可以更新。 每当发生这种情况时, created_at_day
也应更新。
Postgres是否提供任何支持来自动保持created_at_day
与created_at
同步? 如果是这样,怎么办?
当然,这可以在应用程序逻辑中完成。 所以每当created_at
创建或更新,我们更新了created_at_day
列。 但是,只是想知道是否有更简单,自动化的方法来做到这一点。
谢谢
您可以在extract(day from created_at)
创建索引extract(day from created_at)
创建extract(day from created_at)
要查看区别:
建立表格
knayak=# create table t as select i ,now()::timestamp + interval '1 days' * i as created_at from generate_series(1,10000) as i;
SELECT 10000
在created_at上创建普通索引
knayak=# create index ind_created_at on t(created_at);
CREATE INDEX
knayak=# explain analyze select * from t where extract(day from created_at) = 3;
QUERY PLAN
-------------------------------------------------------------------------------------------------
Seq Scan on t (cost=0.00..205.00 rows=50 width=12) (actual time=1.049..6.020 rows=328 loops=1)
Filter: (date_part('day'::text, created_at) = '3'::double precision)
Rows Removed by Filter: 9672
Planning time: 0.392 ms
Execution time: 6.070 ms
(5 rows)
用提取创建索引
knayak=# drop index ind_created_at;
DROP INDEX
knayak=# create index ind_created_at on t( extract(day from created_at) );
CREATE INDEX
knayak=# explain analyze select * from t where extract(day from created_at) = 3;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------
Bitmap Heap Scan on t (cost=4.67..61.66 rows=50 width=12) (actual time=0.110..0.260 rows=328 loops=1)
Recheck Cond: (date_part('day'::text, created_at) = '3'::double precision)
Heap Blocks: exact=54
-> Bitmap Index Scan on ind_created_at (cost=0.00..4.66 rows=50 width=0) (actual time=0.093..0.093 rows=328 loops=1)
Index Cond: (date_part('day'::text, created_at) = '3'::double precision)
Planning time: 0.316 ms
Execution time: 0.314 ms
(7 rows)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.