随笔分类 - mysql
摘要:原查询:select tid, fid, subject, author, authorid from dz_forum_thread where authorid in (select uid from dz_common_member where groupid in (1, 3, 23)) and dateline > 1395663240 and highlight 40 (用时10s)优化后:select tid, fid, subject, author, authorid from dz_common_member as m, dz_forum_thread as t wh
阅读全文
摘要:selectconcat(table_name,'.',column_name)as'foreignkey',concat(referenced_table_name,'.',referenced_column_name)as'references'frominformation_schema.key_column_usagewheretable_schema='project'andreferenced_table_nameisnotnull;selectconcat(table_name,'.'
阅读全文
摘要:来源:http://www.javaeye.com/topic/615260当你试图在mysql中创建一个外键的时候,这个出错会经常发生,这是非常令人沮丧的。像这种不能创建一个.frm 文件的报错好像暗示着操作系统的文件的权限错误或者其它原因,但实际上,这些都不是的,事实上,这个mysql报错已经被报告是一个mysql本身的 bug并出现在mysql 开发者列表当中很多年了,然而这似乎又是一种误导。 在很多实例中,这种错误的发生都是因为mysql一直以来都不能很好的支持的关系的问题, 更不幸的是它也并没有指明到底是哪一个问题会导致上面那种错误,下面我把导致这个可怕 的150错误的常见原因列出来
阅读全文
摘要:建库create database 库名选择库use 库名;显示数据库中的所有表show tables;显示数据库中的一个表show create table 表名;创建表create table 表名;删除表drop table 表名;添加列alter table 表名 add column 列名 not null ;修改列alter table 表名 modify column 列名 not null;添加主键alter table 表名 add primary key (列名);删除主键alter table 表名 dropprimary key;添加索引alter table 表名 a
阅读全文
摘要:今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。1. 为查询缓存优化你的查询大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后
阅读全文
摘要:不同引擎之间的核心特点:并发:一些应用需要更为细致的锁特性(如行级锁),选择正确的锁机制可以大幅提升性能,减少不必要的开销。这个范畴也包括事务中多版本的快照支持。事务支持:并不是每种应用都需要事务,但对于那些需要严格的ACID性能和并发一致性的需求的应用,则事务特性是必不可少的。外键约束:关系型数据库需要完整的参照一致性。物理存储:数据和索引按照物理文件存储的需求。索引支持:不同的应用需要不同的使用索引策略,不同的存储引擎都有自身特有的索引特性。(尽管所有引擎都具备B-TREE索引特性)内存缓冲:不同的存储引擎拥有不同的内存缓冲技术,可以提升数据执行的性能和存储的速度,当然所有的存储引擎也共同
阅读全文
摘要:对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章(实在不清楚为什么Coding Horror也被墙)通过 文氏图 Venn diagrams 解释了SQL的Join。我觉得清楚易懂,转过来。假设我们有两张表。Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录是相同的,如下所示:id name id name-- ---- -- ----1 Pirate...
阅读全文
摘要:解决不能通过mysql .sock连接MySQL问题 这个问题主要提示是,不能通过 '/tmp/mysql .sock'连到服务器,而php标准配置正是用过'/tmp/mysql .sock',但是一些mysql 安装方法 将 mysql .sock放在/var/lib/mysql .sock或者其他的什么地方,你可以通过修改/etc/my.cnf文件来修正它,打开文件,可以看到如下的东东: [mysql d] socket=/tmp/mysql .sock 改一下就好了,但也会引起其他的问题,如mysql 程序连不上了,再加一点: [mysql ] socke
阅读全文
摘要:1.第一范式(1NF):无重复的列 (列不可分)2.第二范式(2NF): 非主键列完全依赖于主键 (不能部分依赖)3.第三范式(3NF): 非主键列不依赖于其他非主键列(消除传递依赖)4.第四范式(4NF):禁止主键列和非主键列一对多关系不受约束5.第五范式(5NF):将表分割成尽可能小的块,为了排除在表中所有的冗余.
阅读全文
摘要:能够最佳的使用好数据库需要扎实的基础,下面文章详细的说明了20个数据库设计的最佳实践,很适合是实习的程序员学习。AD:使用明确、统一的标明和列名,例如 School, SchoolCourse, CourceID。数据表名使用单数而不是复数,例如 StudentCourse,而不是StudentCourses。数据表名不要使用空格。数据表名不要使用不必要的前缀或者后缀,例如使用School,而不是TblSchool,或者SchoolTable等等。数据库中的密码要加密,到应用中再解密。 (其实就是散列存储、单向加密)使用整数作为ID字段,也许现在没有这个必要,但是将来需要,例如关联表,索引等等
阅读全文
摘要:对于大多数web应用来说,数据库都是一个十分基础性的部分。如果你在使用PHP,那么你很可能也在使用MySQL—LAMP系列中举足轻重的一份子。对于很多新手们来说,使用PHP可以在短短几个小时之内轻松地写出具有特定功能的代码。但是,构建一个稳定可靠的数据库却需要花上一些时日和相关技能。下面列举了我曾经犯过的最严重的11个MySQL相关的错误(有些同样也反映在其他语言/数据库的使用上)。。。1.使用MyISAM而不是InnoDBMySQL有很多数据库引擎,但是你最可能碰到的就是MyISAM和InnoDB。MySQL默认使用的是MyISAM。但是,很多情况下这都是一个很糟糕的选择,除非你在创建一个非
阅读全文