如果您要编写这样的查询:
SELECT * FROM `posts` WHERE `views` > 200 OR `views` > 100
MySql会分析这个查询并意识到它实际上是等价的吗?
SELECT * FROM `posts` WHERE `views` > 100
换句话说,MySql是否会优化查询,从而跳过任何不必要的WHERE检查?
我之所以问这个问题,是因为我正在编写一段代码,该代码目前使用冗余的WHERE子句生成查询。我想知道在将这些查询发送到MySql之前是否应该对它们进行优化,或者这是否没有必要,因为MySql无论如何都会这样做。
我知道SQL只能返回一定数量的行,如:
MySQL:select ... order by num desc limit 10
Oracle:WHERE ROWNUM <= 10 and whatever_else
但我的印象是,这些用户通过查找符合"where“条件的所有条目来执行,然后只返回其中的一个子集。
我想告诉它的是,“给我你遇到的满足我的条件并停止执行的第一个N个条目”,这样如果我只想要一个DB中某些数据的示例而不是所有的数据,我的查询就会执行得非常快。
有人知道如何在MySQL和/或Oracle中这样做吗?Oracle SQL首选,但任何帮助都是感激的。
另外,正
我不知道这个问题是否合适,但情况是这样的:
在我的mysql查询中,我得到了时间差,并在一个公共部分下获得了每个员工的总和。
SUM(HOUR(TIMEDIFF(fDate, fDateOut))) AS timediff
现在,在得到结果后,我只需要从结果中获得8小时,并将多余的小时数放在表中的另一列中,其中:
example:
fDate fDateOut
2013-08-01 07:00 2013-08-01 18:00
timediff = 11 hours // <------ now I need to get only 8
假设你有这样的查询..。
SELECT T.TaskID, T.TaskName, TAU.AssignedUsers
FROM `tasks` T
LEFT OUTER JOIN (
SELECT TaskID, GROUP_CONCAT(U.FirstName, ' ',
U.LastName SEPARATOR ', ') AS AssignedUsers
FROM `tasks_assigned_users` TAU
INNER JOIN `users` U ON (
我已经创建了一个位置表,其中保存了lat、long和location。我的要求是,当我经过一个LAT.Long时,将得到距离该位置表10英里内的最近位置。位置表结构如下:
CREATE TABLE IF NOT EXISTS `locations` (
`latitude` float(14,12) unsigned NOT NULL,
`longitude` float(14,12) unsigned NOT NULL,
`location` varchar(150) NOT NULL,
PRIMARY KEY (`latitude`,`longitude`)
) ENGIN
我有一张时间是日期类型的桌子。我希望选择在过去7天中添加的所有记录,然后将它们放到xml文件中。没有WHERE语句,我可以选择所有数据并输出它。
以下是代码:
$query_feed = "SELECT * FROM keysound_data WHERE time >=DATE_SUB(CURDATE(), INTERVAL 7 DAY AND time <= CURDATE()";
$feed = mysql_query($query_feed, $dconn) or die(mysql_error());
$row_feed = mysql_fetch_ass
我使用MySQL5.5和centos 7。我的数据库中有些表是InnoDB,我通过在互联网上阅读文章来优化my.cnf文件。我使用事务和提交。但是插入和更新非常缓慢,您可以看到。我不能使用MyISAM,因为这些表总是得到太多的插入、更新和读取。
My.cnf文件
# The following options will be passed to all MySQL clients
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld]
#innodb_force_recover
在SQL中,程序员在编写MySQL时应该注意查询优化(比如选择最优的关系代数查询)吗?或者这是DBMS的责任。
来解释我的意思。在本例中:SELECT * FROM Staff s, Branch b WHERE s.branchNo = b.branchNo AND (s.position = 'Manager' AND b.city = 'London')
MySQL的查询优化器是否有效地决定了如何分配谓词( WHERE子句)的括号?(例如,取决于每个表的大小或系统统计数据中的任何信息)