Tag: MySQL

何时使用STRAIGHT_JOIN和MySQL

我只是有一个相当复杂的查询,我正在工作,它需要8秒钟运行。 EXPLAIN显示出奇怪的表格顺序,即使FORCE INDEX提示也没有使用我的索引。 我遇到了STRAIGHT_JOINjoin关键字,并开始用它replace一些我的INNER JOIN关键字。 我注意到很大的速度提高。 最后我用STRAIGHT_JOINreplace了所有的INNER JOIN关键字,现在运行时间是0.1秒。 我的问题是你什么时候使用STRAIGHT_JOIN,什么时候使用INNER JOIN? 如果您正在编写好的查询,是否有任何理由不使用STRAIGHT_JOIN?

在MySQL中插入包含单引号的值

如何在MySQL中插入一个由单引号或双引号组成的值。 即 This is Ashok's Pen. 单引号会产生问题。 可能还有其他转义字符。 你如何正确插入数据?

MySQL – 在现有表格中大写每个单词的第一个字母

我有一个现有的表'people_table',与字段full_name 。 许多logging具有填充不正确的shell的“full_name”字段。 例如'fred Jones'或'fred jones'或'Fred jones' 。 我可以find这些错误的条目: SELECT * FROM people_table WHERE full_name REGEXP BINARY '^[az]'; 我怎样才能把每个单词的第一个字母大写? 例如'fred jones'成为'Fred Jones' 。

如何加快在多列MySQL中的SELECT .. LIKE查询?

我有一个MySQL表,我非常频繁地使用SELECT x, y, z FROM table WHERE x LIKE '%text%' OR y LIKE '%text%' OR z LIKE '%text%'查询。 任何种类的索引是否有助于加快速度? 表中有几百万条logging。 如果有什么可以加速search的话,是否会严重影响数据库文件的磁盘使用率以及INSERT和DELETE语句的速度? (没有UPDATE执行) 更新 :发布后很快,我看到了很多关于在查询中使用LIKE的方式的信息和讨论; 我想指出的是,解决scheme必须使用LIKE '%text%' (也就是说,我正在查找的文本是前缀并附加了%通配符)。 数据库也必须是本地的,原因很多,包括安全性。

从Postgres迁移数据库到MySQL

我已经将数据库从postgresql更改为MySQL ,但我不知道如何从一个数据传输到其他数据。 有谁知道任何命令,我可以从Postgresql复制/迁移我的数据库到MySQL ?

MySQL中的多列外键?

我有一个主键由两列(product_id,attribute_id)组成的表。 我有另一个表需要引用这个表。 如何在另一个表中使外键与两个主键在表中的一行相链接?

防止Node.js中的SQL注入

是否有可能防止SQL注入在Node.js(最好与一个模块),就像PHP有防备他们的Prepared语句相同的方式。 如果是这样,怎么样? 如果不是, 那么有些示例可能会绕过我提供的代码(请参见下文)。 一些上下文: 我正在使用node-mysql模块构build一个由Node.js + MySql组成的后端堆栈的Web应用程序。 从可用性的angular度来看,这个模块非常棒,但是它还没有实现类似于PHP的Prepared Statements (尽pipe我知道它是在待办事项上 )。 从我的理解来看,除了别的之外,PHP的准备语句的实现在预防SQL注入方面起了很大作用。 不过,我担心, 即使使用默认提供的string转义 (如下面的代码片段),我的node.js应用程序也可能面临类似的攻击。 node-mysql似乎是node.js最stream行的mysql连接器,所以我想知道其他人可能在做什么(如果有的话)来解决这个问题 – 或者如果它甚至是node.js的问题开始(不知道这将不会如何,因为涉及用户/客户端input)。 我应该暂时切换到node-mysql-native ,因为它提供了准备好的语句? 我不愿意这样做,因为它似乎不像node-mysql那样活跃(尽pipe这可能意味着它是完整的)。 下面是用户注册代码片段,它使用了卫生清理器模块,以及node-mysql预先准备好的类似语句的语法(正如我上面提到的那样,字符转义),以防止跨站点脚本和sql注入: // Prevent xss var clean_user = sanitizer.sanitize(username); // assume password is hashed already var post = {Username: clean_user, Password: hash}; // This just uses connection.escape() underneath var query = connection.query('INSERT INTO users […]

MySQL是否忽略唯一约束上的空值?

我有一个电子邮件专栏,我想要是独一无二的。 但我也希望它接受空值。 我的数据库可以有2个空电子邮件吗?

MySQL COUNT DISTINCT

我试图在昨天收集我的cp中的不同访问次数,然后数一下。 SELECT DISTINCT `user_id` as user, `site_id` as site, `ts` as time FROM `cp_visits` WHERE ts >= DATE_SUB(NOW(), INTERVAL 1 DAY) 由于某种原因,这是拉多个结果与相同的网站ID ….我怎么只拉和计数独特的site_id CPlogin?

mysql事务 – 回滚任何exception

如果在mysql命令列表中发生任何错误,是否可以自动回滚? 比如说: begin transaction; insert into myTable values1 … insert into myTable values2 …; — will throw an error commit; 现在,执行我希望整个事务失败,因此我不应该看到myTable中的values1。 但不幸的是,即使交易存在错误,表格也正在被价值化。 任何想法如何使它回滚? (再次,在任何错误)? 编辑 – 从DDL更改为标准的SQL