我有下面的2 mysql_queries**:**
查询1(对于imgClass和imgGender,这个查询还会重复两次):
$imgFamily_query = "SELECT DISTINCT imgFamily FROM primary_images WHERE '$clause' ";
查询2:
$query_pag_data = "SELECT imgId, imgURL, imgTitle, view, secondary FROM primary_images WHERE '$clause' ORDER BY imgDa
这是用于InnoDB和MySQL 5.7的。
如果我有这样的查询:
SELECT A, B, C FROM TABLE WHERE STRCMP(D, 'somestring') > 0
是否可以在D上建立一个可供查询使用的索引?也就是说,MySQL是否足够聪明地为STRCMP函数使用btree索引?
如果没有,我如何才能重新设计查询(和/或表),以便能够对D进行字符串比较,并且可以进行某种形式的剪枝,从而不必命中每一行?
首先,我要指出,我绝不是一个数据库专家。我确实知道如何用几种需要数据库后端的语言编写应用程序,而且我对MySQL、Microsoft和现在的MEMSQL比较熟悉--但我也不是数据库方面的专家,因此我们非常感谢您的输入。
我一直在开发一个应用程序,需要交叉引用几个不同的表。我最近遇到的一个非常简单的例子是,我必须:
在每天的基础上,把600 K到1米的记录拉到一个临时的桌子上。
比较一下新的数据拉力和旧的数据拉力之间发生了什么变化。将该信息记录在单独的表中。
用新记录重新填充表。
运行#2是一个类似以下查询的查询:
SELECT * FROM (NEW TABLE) LEFT
我是一个应用统计学家,不熟悉mySQL,希望得到你的建议。
错误:在对大型mySQL表(略超过20亿行)运行相对简单的查询(SELECT MAX(Timestamp) FROM Database.Table;)时,服务器运行约10分钟并显示错误:
错误消息文本:
在R:
08S01 2013 [MySQL][ODBC 5.2(a) Driver][mysqld-5.5.32-31.0]Lost connection to MySQL server during query
[RODBC] ERROR: Could not SQLExecDirect 'SELECT MAX(Timest
我有一个包含近10亿条记录的MyISAM表,其中有三个字段: a、b和c。
该表在列a、b和c上按该顺序具有btree多字段索引。分析索引显示,该索引中字段的基数为:
a: 112 (整型)
b: 2694 (整型)
c: 936426795 (日期时间)
这意味着对于a,大约有100个不同的值,对于b,大约有20个不同的值,对于a和b的每个组合,都有大量的c的值。
我想在a的特定值上执行查询,在c上执行范围查询。
select a, b, c from mytable where a=4 and c >= "2011-01-01 00:00:00" and c <
我“分组依据”我的数据库中的所有交易按商店。如何显示查询后未分组的所有其他交易?
这是我正在使用的查询:
$query = mysql_query("SELECT * FROM deals WHERE DATE_FORMAT(expiration_date,'%Y-%m-%d %H:%i:%s') >= NOW() $cat ORDER BY deal_id ASC") or die(mysql_error());
我正在使用MySQL运行我的Rails应用程序。我开始查看我的MySQL慢查询日志,我发现大约有6000行,其中大部分重复了以下查询。
SET timestamp=1488423689;
SELECT COUNT(*) FROM `system_events`
WHERE (notified
AND id != 476200
AND customer_id = 1
AND classification = 50039
AND created_at >= '2017-02-27 03:01:26');
# Time:
我在我的项目中有一个查询,我必须使用类似查询和通配符搜索来搜索记录。
以下是查询:
Select * from table_name where Col_name like '% text %';
现在,在上面的查询中,正常的索引将不起作用。因此,我在MyISAM mysql表中使用了全文索引。
之后,我的查询修改如下
Select * from table_name where MATCH(Col_name) AGAINST('text' IN BOOLEAN MODE);
第一个查询给出了150000条记录,而第二个查询只给出了3000条记录。
请指导我如何
我想在一个SQLite数据库上运行一个查询,它看起来像
SELECT a,b,c,d FROM data WHERE a IN (1,2,3) ORDER BY b,c
我应该使用什么样的索引/顺序来使SQLite (或者以后的MySQL)能够快速地完成这个任务?如何轻松地检查查询是否被索引所增强(即如何解释解释)?如果我在索引中包括了SQLite,那么d会更快吗?
编辑:以下是表的特点:
10.000.000行
60个不同的a
6.000.000不同的b
2.000清晰c
无约束
这张表是我的个人分析数据,它只写一次,然后只读一遍。
PS:当SQLite/My
我有这个查询,要将日期设置为遥远的未来。该表有400万条记录。而且这个查询非常简单。但查询几乎花了3分钟才能运行。
UPDATE TABLE
SET to_date = STR_TO_DATE('31-01-3000','%d-%m-%Y')
WHERE to_date IS NULL;
此列上没有索引。
如何调优此查询或MySQL本身?非常感谢。
我有一个使用Oracle 11g数据库的应用程序。我有一个相当大的表(~50k行),因此我查询:
SELECT omg, ponies FROM table WHERE x = 4
我发现,字段x没有被索引。这个查询经常发生,但问题是性能并不差。在x上添加索引确实使查询速度提高了一倍,这比我预期的要低得多。在MySQL上,它至少可以使查询速度提高十倍。(编辑:,我在MySQL上做了测试,发现了一个巨大的不同。)
当Oracle检测到我经常查询非索引字段时,我怀疑Oracle添加了某种自动索引。我说的对吗?我在文档里连暗示都找不到。
我有一个如下所示的MySql查询:
SELECT trace_access.Employe_Code, trace_access.Employe_Prenom,
trace_access.Employe_Nom, , trace_access.Evenement_Date, trace_access.Evenement_Heure
FROM trace_access
INNER JOIN emp
ON trace_access.Employe_Code = emp.Employe_CodeEmploye
LEFT JOIN user
ON emp.Employe_ID = user.Emp
我有一个从数据库获取注释的查询,并根据用户键入的内容显示这些注释。
PHP:
$query=mysql_query("SELECT * FROM comments WHERE MATCH (comments) AGAINST ('%$user_text%')");
while ($row=mysql_fetch_assoc($query)){
echo "<div>$row['comment']</div>";
}
这不会返回任何值。可能是mysql数据库中的comments
我有一个大约有17M行的MySQL表,在这个表中,我最终执行了大量聚合查询。
在本例中,假设我有index_on_b、index_on_c、compound_index_on_a_b、compound_index_on_a_c
我尝试运行一个查询解释
EXPLAIN SELECT SUM(revenue) FROM table WHERE a = some_value AND b = other_value
我发现选择的索引是index_on_b,但是当我使用查询提示时
SELECT SUM(revenue) FROM table USE INDEX(compound_index_on_a_b
Schema:
CALL (ID,USER_ID(Foreign key),SP_USER_ID(Foreign key))
USER (ID,NAME)
查询1:
SELECT u.name,
v.name
FROM call c
INNER JOIN USER u
ON c.user_id = u.id
INNER JOIN USER v
ON c.sp_user_id = v.id
查询2:
SELECT u.name
FROM call c
IN
好的,所以我理解了复合索引是如何在哪里工作的,但是如果索引中间的一列在组中的话怎么办呢,如下所示:
CREATE TABLE `test` (
`a` VARCHAR(255) NOT NULL,
`b` VARCHAR(255) NOT NULL,
`c` VARCHAR(255) NOT NULL,
INDEX(`a`,`b`,`c`)
) ENGINE=InnoDB DEFAULT CHARSET='utf8';
SELECT * FROM test WHERE a = ? AND c = ? GROUP BY b
MySQ
我在MySQL 5.0,5.1,5.5上测试了下面这个看似简单的查询,发现它非常慢。
select * from entry where session_id in
(select session_id from entry where created_at > [some timestamp])
多个条目可以具有相同的会话ID,但具有不同的created_at时间戳。该查询的目的是获取所有条目,这些条目至少有一个条目来自同一session_id,其created_at大于指定的时间戳。
我见过其他人谈到类似查询的MySQL子查询性能问题,MySQL将子查询视为依赖查询,并对外部
我运行的是一个8 8gb的内存,四核,固态硬盘云服务器。
根据New Relic的说法,大多数数据库查询都很快,但是一个查询只更新一行的一列需要16秒。
我的问题是:
UPDATE user SET ad=$currentAdSet WHERE ckey='$_COOKIE[ckey]'
我使用mysql_query("") php函数来执行查询。
Mu user表大约有43000行,结构简单。
为什么这个查询花了这么长时间?有什么想法吗?
所以我有一个MYSQL db,其中布尔值存储为binary(1)。我要研究为什么某些查询是缓慢的,即使在相关列上有一个索引。问题是,在构建SELECT查询时,系统使用了setBoolean方法PreparedStatement,据我所知,该方法将值转换为MYSQL TINYINT。查询找到了正确的行,但没有使用索引,因为索引位于二进制列上。但是,如果我使用setString方法并将布尔值转换为字符串,即'0' for false和'1' for true,MYSQL就能够使用索引并快速找到想要的行。
基本上,第一个查询是我使用setBoolean时得到的,第二个
考虑一下,您有一个名为“user”的MySQL表,它有数以百万计的行,其结构如下,并且没有任何索引。
TABLE: user_id (PK) email name signup_date
我们希望执行以下查询:
SELECT user_id
FROM user
WHERE email=’email@bolidea.com’ AND name=’Olivier Cabanes’
MySQL如何处理该查询的速度?
如何提高该查询的性能?
在mysql中,WHERE子句的顺序是否会影响服务器处理查询所需的时间?
我知道查询是经过编译和优化的,但我不知道这种优化是否会改变WHERE子句的顺序,因此在假设的情况下,处理首先选择整数结果的查询所需的时间比以字符串索引开头的查询要少。
WHERE a = 2 AND b = 'Wiliam'
- 1: Search in 200 items and find 20 results with value a = 2
- 2: Search in 20 items and find 1 result with b = Wiliam
那
WHERE b = 'Wili
我在mysql中有一个查询。
SELECT
*
FROM
Accounts AS a
WHERE
('s' IS NULL OR (a.FirstName LIKE CONCAT('s','%') OR
a.LastName LIKE CONCAT('s','%') OR
a.FullName LIKE CONCAT('s','%')
我刚从Access更改为mySQL。我有几张桌子,叫做"Veranstaltung“和"Veranstaltung_User”。我想要获取用户已订阅的所有事件(=Veranstaltung),但用户正在查看的事件除外。
我用下面的语句做到了这一点
SELECT VID, Bezeichnung, Datum
FROM tbl_Veranstaltung
WHERE year(Datum) = 2012
AND VID <> 613
AND VID IN (SELECT BewerbID
FROM Verans