建索引的话图形工具建议用 mysql workbench。 命令行的话:
ALTER TABLE `db_name`.`tb_name`
ADD INDEX `index_name` (`column_name` ASC);
具体在哪个 column 上建立索引,要具体分析,相应的 sql 语句可能要改,如果你用的是存储过程的话,那 PHP 代码应该改动不大,如果 sql 编码进 PHP 代码,那 PHP 代码当然要随 sql 的改动而动。利弊的话,有用就是好的,没用也是好的,出了问题就是坏的
CPU 90%的问题,需要检查是哪个表的什么SQL出的问题,然后根据这个SQL,对表进行索引检查,建立相应的索引,确保索引命中率能到达到100%;同时检查代码中是否有太多的计算,如果太多计算,比如大量的split函数等,CPU就会很累。
建表:
use aaa
create table product .......
有什么利弊?建表的利弊吗?这个问题没看懂?
建立索引不需要改php的代码。完全是透明的。
数索引顾名思义就是加给字段加了函数的索引,这里的函数也可以是表达式。所以也叫表达式索引。
MySQL 5.7 推出了虚拟列的功能,MySQL8.0的函数索引内部其实也是依据虚拟列来实现的。