存储多个数据时,会自动生成数组。
如果数据为空,则为null。
此时返回的数据格式不统一。
则在存储时做转换:
$tag = array("标签1","标签2"); // 假设数据
if($tag){
$v['tag'] = $tag;
}
else{
$v['tag'] = array(); // 没有数据时,存储空数组
}
存储多个数据时,会自动生成数组。
如果数据为空,则为null。
此时返回的数据格式不统一。
则在存储时做转换:
$tag = array("标签1","标签2"); // 假设数据
if($tag){
$v['tag'] = $tag;
}
else{
$v['tag'] = array(); // 没有数据时,存储空数组
}
正常情况下 count 为空返回0;
如果查询的结果为空,且使用了 group by ,则 count() 返回NULL
例如:
select count(*) from test_table where company=223 group by id;
正常情况下,sum返回0
如果筛选条件 where 后,数据集为空,则 sum为 null。
如果希望 sum 始终返回0,可以用 IFNULL 函数判读为null时指定为0:
IFNULL(sum(id),0)
设置为block,
宽度100%
如果有必要,设置最小宽度(可选)。
<style>
input{
display:block;
width: 100%;
min-width: 100px;
}
</style>
此工具是定时同步,sql查询同步。
每次同步后,记录lastModefineTime,也就是最后一次修改时间,下次同步时从该段时间开始更新。
logstash的原理是查询sql,并把数据送到es中,如果sql中的数据被删除,则不能把es中对应的数据进行删除。解决办法是,增加一个字段,比如 del =1 ? 表示删除,也就是软删除。在使用时把该字段作为查询条件即可筛选该数据。
很明显,会导致无用数据越积越多。
当然也不是没有办法,那就是定时清除 es 中 del = 1的数据,从而真正把它从es中删除掉。
logstash用作数据同步,理论上是完全可行的。
优点:简单灵活。
缺点:Logstash耗资源较大,它是定时运行,也就是每隔一段时间就执行一次同步(定时频率可以自己设定),运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患
es的多次查询和一次查询相差不大,是因为第一次查询后数据被缓存了。所以一次进行十几次es查询,比一次查询慢不了多少。
es耗时主要是建立连接对象,以及第一次查询。
(第一次查询时要建立连接,和创建连接对象耗时相当,而多次查询会复用连接)(和sql连接同理)
总的来说,多次查询时连接被复用,数据被缓存,所以多次查询和一次查询相差不大,对于复杂的查询完全可以多次请求而不用担心时间会增加很多。
使用 emeditor 轻松打开。
用于切分数组为多个小数组
array_chunk(array,size,preserve_key);
array表示原数组,size表示分割大小,如果preserver_key为true则保留原键名,默认为false重新生成数字键名。
比如像数据库中插入很大数据时,可以分成多个小部分后再插入:
if ($data) {
$arr = array_chunk($data, 2000);
foreach ($arr as $info) {
db('cust_account_settlement')->insertAll($info);
}
}
两种用法。
对于键名数组,可用于一次性更新键值。(覆盖)
对于数字数组,可用于合并数组。(追加)
array_merge(array1,array2,array3...)
可以一次合并多个数组。
如果希望多个数组中相同键名元素不被覆盖且被合并为一个数组元素(保留所有的元素),可使用 array_merge_recursive
array_merge_recursive(array1,array2,array3...)
其他键名数组和数字数组的相关函数:
array_keys 取得数组的键名(并返回一个只包含键名的数组)
array_keys(array,value,strict)
array为原数组,value可以指定键值筛选,strict和value连用,默认为false,如果为true则 5 和 “5” 是不同的。
array_values返回去掉键名的数组(也就是值不变,键名变为默认值)
array_values(array)
表示“正午、中午、全盛期”
afternoon 表示下午
He should arrive at noon.
他应该在中午到达。
He should arrive at noon.
他该在中午到达。
We eat at noon.
我们在中午吃饭。