mysql一个表可以定义几个主键?
mysql一张表只能定义一个主键。
主键的作用是为了保障数据的唯一性,作为该表的唯一标识,保障数据不会出现重复,可以使用单一字段作为主键(例如身份证号),也可以使用多个字段作为主键(例如姓名+性别+员工号),这样理解起来会比较合适。
数据库与MySql有什么区别?
0、Oracle就是大名鼎鼎的甲骨文公司的,MySQL由瑞典MySQL AB公司开发,2008年1月16号被Sun公司收购。2009年,SUN又被Oracle 收购。1、Oracle是大型数据库而MySQL是中小型数据库,Oracle市场占有率达40%,MySQL只有20%左右,2、Oracle是收费的,MySQL是开源免费的,充钱和没充钱的能没区别吗?3、Oracle的默认端口号是1521,MySQL的默认端口号是33064、Oracle是一个数据库对应多个用户,而MySQL是一个用户对应着多个数据库5、Oracle如果想要让某个字段自增的话,需要创建序列sequence,然后添加的时候序列名.nextval(),而MySQL在创建表的时候就可以在想要自增的字段那里设置 auto increment6、Oracle的字符是varchar2,而MySQL是varchar7、Oracle的数字类型统统是number,而MySQL是8、MySQL的分页比较方便而Oracle需要使用伪列rownum,相对来说比较麻烦。
mysql可以同时查询多张表吗?
刚超过百万的表真不大,我做过的公司很多表都是几百万,个别的到了千万,对于一般的查询来说可以不用刻意考虑怎么存储的问题,mysql够扛的。而对于复杂的多连表查询,尤其是在做数据统计业务时,sql操作会很复杂,会很慢,但是因为这个业务是对数据的实时性要求不高,我们会采用写定时任务的方式,提前把多张表查询跑成一张最终的结果存储起来,我们业务上的sql直接去查这个最终表就行了。
有人说分表,横着切分。但是我见过的公司通常不会完全这样做,因为分表之后的弊端也很大,会导致有些业务对该数据的操作需求实现不了或者很麻烦。实际的做法是,分表的同时,仍然保留整体的原表,两份数据,一份是原表,另一份是对原表进行切分的副本,用这个分开的表来满足某部分业务的查询需求即可。至于怎么分,看业务,比如说我做过一款手机游戏的app,在统计用户的月活跃情况时,我会按月份分。
抛开具体的业务不谈,在其他方面通常的解决方案还有:
第一:成本最低也是最实用的方式:索引优化、sql优化。
第二:上缓存,查询也不一定完全就是数据量大影响的,高访问量请求数据库密集时,也会影响,用缓存挡在mysql前面,进行流量削锋。
第三:mysql读写分离,其实本质也是一种负载均衡的实现方式。
第四:分布式,把同一份数据分到不同服务器上,这个成本就大了,一般的公司用不到,想满足不同业务的需求对技术要求很高,较难解决的问题是在数据的一致性上。
等等,不管使用什么技术,一定要考虑好这个技术可能带来的后果尤其弊端是什么。