虽说给表增加索引在查询的时候能大大加快查询速度,但是索引在修改的会降低数据库的性能(要检查、更新索引需要时间) 如果您发现实验过程有什么不当之处恳请指正 :)
实验结果:
没有索引 整型做Primary Key 整型做Index 字符串做Primary Key 字符串做Index
53 61 81 216 218
数据都是在插入100万的时候得出的,时间单位:秒
可以看出整型当成PK的时候,性能下降了13%,字符串的时候性能下降了4倍吧,没有必要的时候别用字符串做PK,整型做Index的时候性能下架了60%吧 (性能都是值插入数据的时候的性能)
当然如果你的查询次数远大于修改次数,这点性能的舍弃还是值得的!所以避免数据库中索引满天飞的情况吧
------------------------------------------------------------------------------
详细实验过程:(表的引擎都是 ENGINE=MyISAM )
先看表结构:
mysql> desc Test_Key;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | | |
| name | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
Int型的id在这里是主键
性能分析存储过程:
create PROCEDURE proc_test_performance(in count bigint)
BEGIN
DECLARE st
实验结果:
没有索引 整型做Primary Key 整型做Index 字符串做Primary Key 字符串做Index
53 61 81 216 218
数据都是在插入100万的时候得出的,时间单位:秒
可以看出整型当成PK的时候,性能下降了13%,字符串的时候性能下降了4倍吧,没有必要的时候别用字符串做PK,整型做Index的时候性能下架了60%吧 (性能都是值插入数据的时候的性能)
当然如果你的查询次数远大于修改次数,这点性能的舍弃还是值得的!所以避免数据库中索引满天飞的情况吧
------------------------------------------------------------------------------
详细实验过程:(表的引擎都是 ENGINE=MyISAM )
先看表结构:
mysql> desc Test_Key;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | | |
| name | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
Int型的id在这里是主键
性能分析存储过程:
create PROCEDURE proc_test_performance(in count bigint)
BEGIN
DECLARE st