作者回复: 问题很好,下面是我的理解,供你参考: 1. MySQL Innodb的主键索引是一个B+树,数据存储在叶子节点上,10条数据,就有10个叶子节点。 2. sex索引是辅助索引,也是一个B+树,不同之处在于,叶子节点存储的是主键值,由于sex只有2个可能的值:男和女,因此,这个B+树只有2个叶子节点,比主键索引的B+树小的多 3. 这个表有主键,因此不存在所有字段都为空的记录,所以COUNT(*)只要统计所有主键的值就可以了,不需要回表读取数据 4. SELECT COUNT(*) FROM t,使用sex索引,只需要访问辅助索引的小B+树,而使用主键索引,要访问主键索引的那个大B+树,明细工作量大,这就是为什么,优化器使用辅助索引的原因
作者回复: 我以为,程序员的第一性原理应该是实际业务需求,技术服务于业务,一切从实际需求出发。
作者回复: 感谢鼓励
作者回复: 是从零开始的入门课,随着课程的展开,我会遵循由浅入深,循序渐进的原则进行讲解。后面肯定会不断深入。
作者回复: 谢谢鼓励
作者回复: 这个要看是什么场景,比如,web端的应用,我一般是用Java来处理与MySQL的数据交互。主要是Java功能比较强大,我也比较熟。如果是PC端的应用,我比较喜欢用VC++。
作者回复: 应该是你没有指定varchar类型的最大长度。MySQL要求指定varchar类型的时候,必须要指定最大长度。否则没法分配存储空间
作者回复: 如果不需要合并数据,可以用自增字段做主键。加上商品名称,我是赞成的,这样的冗余有好处
作者回复: hana采用了一些优化策略,比如把数据存储在内存中,这样数据库的性能有很大提升,不过都支持标准的SQL语句,这方面与MySQL差别不大。建议通过产品对应的官方网站查询相关的信息
作者回复: navicat也可以连接MySQL。新建连接->选择MySQL->编辑连接参数,端口3306,本机localhost,密码是你自己安装MySQL时候设置的root的密码。参数填写完成,就可以连接了