建索引的话图形工具建议用 mysql workbench。 命令行的话:
ALTER TABLE `db_name`.`tb_name`ADD INDEX `index_name` (`column_name` ASC)
具体在哪个 column 上建立索引,要具体分析,相应的 sql 语句可能要改,如果你用的是存储过程的话,那 PHP 代码应该改动不大,如果 sql 编码进 PHP 代码,那 PHP 代码当然要随 sql 的改动而动。利弊的话,有用就是好的,没用也是好的,出了问题就是坏的
出现表损坏的根本原因是:你的表使用了MyISAM存储引擎。MyISAM存储引擎主要用于SELECT,如果用于INSERT, UPDATE, DELETE,由于内部缺陷和异常数据访问经常造成索引文件损坏,注意是“经常”。
因此解决办法有二:
1.用myisamchk工具修复或者是经常对数据表优化或检查。一旦文件损坏只能暂停web访问,用myisamchk工具修复后可恢复正常。(暂时性,不能解决根本问题)
2.把表转换为innodb存储引擎。对用户来说是透明的,对程序逻辑不受任何影响,永久解决索引文件损坏的问题。
可通过以下语句把存储引擎转换为innodb
ALTER TABLE `dbname`.`tbname` ENGINE = InnoDB
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)