建立索引本来最基本的原则是看数据表的结果,除了主键、外键以外,应该对经常作为查询条件的字段建立索引。
成都创新互联主营拱墅网站建设的网络公司,主营网站建设方案,app软件开发,拱墅h5小程序设计搭建,拱墅网站营销推广欢迎拱墅等地区企业咨询
获取经常作为查询条件的字段有两个方法,一是通读程序,关注程序里面的where和order by、group by后面的字段,对于需要的进行建立索引。
但是,有时侯阅读程序有困难,那可以利用数据库的日志,例如MYSQL数据库可以建立slow-query日志,把执行慢的SQL语句写入日志里面,分析日志可以找到应该建立索引的字段。
索引合理之后,如果程序还是比较慢,那要看代码是否有问题,比如在循环里面进行反复查询的,特别是非必须的递归调用等。
类似于重置数组信息,这个可以使用php的一个内置函数array_values();
例如:
?php $a=array("a"="Cat","b"="Dog","c"="Horse"); print_r(array_values($a)); // 输出: // Array ( [0] = Cat [1] = Dog [2] = Horse )?
PHP重置数组为连续数字索引的几种方式
比如这样的一个php数组:
[php] view plain copy
$arr = array(
1 = 'apple',
3 = 'banana',
5 = 'orange'
);
想要转换为这样的数组:
[php] view plain copy
$arr = array(
0 = 'apple',
1 = 'banana',
2 = 'orange'
);
1、推荐的方式 array_values 方法
这样方式无论对普通数组还是关联数组都适用
[php] view plain copy
?php
$arr = array(
1 = 'apple',
3 = 'banana',
5 = 'orange'
);
print_r(array_values($arr));
$arr1 = array(
'name' = 'jerry',
'age' = 16,
'height' = '18cm'
);
print_r(array_values($arr1));
输出结果:
[sql] view plain copy
[root@localhost php]# php array.php
Array
(
[0] = apple
[1] = banana
[2] = orange
)
Array
(
[0] = jerry
[1] = 16
[2] = 18cm
)
2、使用 array_merge 方法
该方法如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。所以只能适用于数字索引。
[php] view plain copy
?php
$arr = array(
1 = 'apple',
3 = 'banana',
5 = 'orange'
);
print_r(array_merge($arr));
$arr1 = array(
'name' = 'jerry',
'age' = 16,
'height' = '18cm'
);
print_r(array_merge($arr1));
输出结果:
[php] view plain copy
[root@localhost php]# php array.php
Array
(
[0] = apple
[1] = banana
[2] = orange
)
Array
(
[name] = jerry
[age] = 16
[height] = 18cm
)
3、循环遍历
最原始的方式,臃肿且不够优雅,极力抵制。
[php] view plain copy
?php
function resetArr($arr){
$temp = array();
foreach($arr as $v){
$temp[] = $v;
}
return $temp;
}
$arr = array(
1 = 'apple',
3 = 'banana',
5 = 'orange'
);
print_r(resetArr($arr));
$arr1 = array(
'name' = 'jerry',
'age' = 16,
'height' = '18cm'
);
print_r(resetArr($arr1));
That‘s it!
1:较频繁作为查询、排序、分组和联合操作的字段创建索引。
2:唯一性太差的字段不宜使用索引。
3:使用唯一索引。
4:使用短索引(若对字符串索引,尽量指定一个前缀长度)。
5:利用左前缀(复合索引可以起几个索引的作用,可利用索引最左边的列集来匹配行,称左前缀)
6:不要过度索引(每个索引会占用额外的磁盘空间,并降低写操作的能力,修改数据索引也跟着更新)
7:更新非常频繁的字段不宜创建索引。
8:不会出现在where字句中的字段无需索引。
php elasticsearch 索引管理常用操作主要包括:创建索引、删除索引、查询索引结构,修改索引设置。
虽然,ES可以自动创建索引,不过实际项目中,通常需要预先创建索引结构,明确指定数据类型,避免出现ES自动创建的字段类型不是你想要的类型。
ES中mappings负责索引字段和数据类型,具体的ES mapping语法,请参考: Elasticsearch mapping ,将ES的mapings定义的json结构转成php数组即可,
查询首页的mapping定义
为什么$array = array_values($array);后再打印出来的索引就是从0开始的
array_values()不是获取数组的值吗 跟重置索引有什么关系
===================
是获取数组的值,而且抛弃原数组的索引,重建一个数组.所以相当于重置索引.