如果我有两个表,A和B,其中A在A.i和A.ii上建立索引,而B在B.i上建立索引,我运行以下查询:
SELECT *
FROM A JOIN B
on A.i = B.i
我知道这将使用B上的索引,但如果我使用以下查询,我是否会获得任何性能提升(即,使用A上的索引)?
SELECT *
FROM A JOIN B
on A.i = B.i AND A.ii = B.ii
我的直觉告诉我没有, MySQL文档建议我需要在A.i和A.ii上使用WHERE子句才能看到任何好处,但我希望不仅仅是有根据的猜测。
我有一个数据库表(可能很大,将来有数亿条记录),我将经常在该表上执行以下查询:
select *
from table1
where col1 = [some number]
order by col2
显然,在"col1“上建立索引会使它运行得很快。col1并不是唯一的,因此会返回许多行(我希望是2000+)。
在(col1,col2)上创建索引有意义吗?MySQL会在这个查询中使用它吗?
另外,如果我只查询没有"order“部分,这个索引也会用于"where”部分吗?
我的表有1,000,000行和4列:
id cont stat message
1 rgrf 0 ttgthyhtg
2 frrgt 0 tthyrt
3 4r44 1 rrttttg
...
我正在执行一个select查询,即使我已经建立了索引,它的执行速度也非常慢
SELECT * FROM tablea WHERE stat='0' order by id LIMIT 1
这个查询让我的mysql变得非常慢,我用mysql explain检查了一下,发现了这个
explain SELECT *
可以在复合类型的某个字段上建立索引吗?例如,假设我创建了一个类型
CREATE TYPE complex AS (
r double precision,
i double precision
);
并希望在r和i上分别建立一个索引(特别是Hash/GIST/GIN),这可能吗?
同样,有没有可能有一个索引超过第一,第二,第三,...数组字段的元素?
假设我使用complex[],是否有可能在所有complex[0]、所有complex[1]等上建立索引。
我使用mysql5.1,我有一个表,它有大约1500万个(150万) records.This表,有不同实体的记录,即所有主实体的子记录。
该表中有8列,其中有6列为主键。这些列可能是单独的外键,但由于性能原因,我们已经做了此更改。
即使一个带有两个条件的简单select语句也采用6-8 seconds.Below作为相同的解释计划。
查询
explain extended
select distinct location_code, Max(trial_number) as replication
from status_trait t
where t.status_id
我用的是MySQL,这是我的桌子
|Col A(Primary)| Col B | Col C | Col D |
|1 | SOCCER | 2012-12-01 | P |
|2 | VOLLEY | 2012-12-14 | P |
|3 | SOCCER | 2012-12-01 | L |
|4 | VOLLEY | 2012-12-10 | P |
|3 | SOCCER | 2012-12-13 | L |
此表包含百万行。我经常在查询中使用B列和C
我所拥有的
我有一个基本模型,看起来是这样的:
Schema::create('prospects', function (Blueprint $table) {
$table->id();
});
class Prospect extends Model
{
public function latestStep()
{
return $this->hasOne(Step::class)
->ofMany([
'date' => '
我不例外:
Exception in thread "main" com.google.cloud.datastore.DatastoreException: no matching index found. recommended index is:
- kind: cp_outbox
properties:
- name: format
- name: occasion_name
- name: sent_datetime
- name: status
- name: send_date
在查询下面运行时:
SELECT * FROM cp_outb
有时我会遇到一种奇怪的MySQL行为。让我们假设我有索引(type,rel,created),(type),(rel)。对于这样的查询,最佳选择是:
SELECT id FROM tbl
WHERE rel = 3 AND type = 3
ORDER BY created;
就是使用索引(type, rel, created)。但是MySQL决定将索引(type)和(rel)相交,这会导致较差的性能。下面是一个示例:
mysql> EXPLAIN
-> SELECT id FROM tbl
-> WHERE rel = 3 AND type = 3
我正在对mysql表使用索引。
我的查询是这样的
EXPLAIN SELECT * FROM `logs` WHERE userId =288 AND dateTime BETWEEN '2010-08-01' AND '2010-08-27'
我对这个表日志的字段userId进行了索引,解释查询的结果如下所示。
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE logs
我有以下查询:
SELECT *
FROM s
JOIN b ON s.borrowerId = b.id
JOIN (
SELECT MIN(id) AS id
FROM tbl
WHERE dealId IS NULL
GROUP BY borrowerId, created
) s2 ON s.id = s2.id
是否有一种简单的方法对此进行优化,以便我可以直接进行连接并利用索引?
更新
created字段是GROUP BY语句的一部分,因为由于我们的MySQL版本和正在使用的ORM的限制,有可能拥有具有相同created时间戳值的多个记录。因此,我需要
我有一个这样的问题-
SELECT COUNT(DISTINCT c.y_no)
FROM xyz c
WHERE c.xdate>='2013-09-01';
由于DISTINCT,我的查询占用了太多的时间。该查询扫描了大约1.5亿条记录。我已经在xdate上建立了索引。请给我推荐一个快一点的。
谢谢。
我一直试图在mongodb中为number建立索引,但我找不到方法。我尝试通过以下方式保存文本({db.user.createIndex:" text ","users.comments":"text","users.profiles":"text“})
因此,类似于文本(即字符串),是否有任何类型的数字。我在上搜索过
我有一个客户端运行一个php图片库(在php 5.5上,mysql 5.5上,使用myisam表),它使用目录树方法。不幸的是,他们库应用程序中的一些查询需要非常长的文件端口。令人反感的查询:
SELECT `name`, `slug`
FROM `db_table`
WHERE `left_ptr` <= '914731'
AND `right_ptr` >= '914734'
AND `id` <> 1
ORDER BY `left_ptr` ASC
id、left_ptr和right_ptr上都有索引,但根据解释,
我想在某个字段上执行排序操作。在该字段上建立索引是否有利。例如:
SELECT * FROM `users` WHERE `age`=33 ORDER BY `name`
在这个查询中,我知道在年龄上建立一个索引是有帮助的,但是如果我为name维护一个索引会不会更好。通过索引它会有性能上的提升吗?对于其他查询,也经常需要ORDER BY操作。
我有一个表Calls,它有3列:messageType、callId和lastModified。
对于每个调用,在DB中写入4行,每条消息写一行。有四种类型的消息:呼叫建立、呼叫启动和呼叫停止(代码4)。
列messageType和callId构成主键。
我想删除以下行:
对应于终止调用的行。在数据库中写入呼叫停止消息后,呼叫将被终止.
自4小时以来未被修改的行(例如)。
我使用了以下查询:
DELETE FROM Calls WHERE callId IN (SELECT * FROM (SELECT DISTINCT callId FROM Calls WHERE mess
我有两张桌子如下所示
我在两个表上都有如下所示的综合索引:
users表有一个复合索引:(login_type_id,language_id,enabled,level) 地址表有一个复合索引:(user_id,city_id,enabled)
我想执行以下查询
select * from users u
left join address adr
on u.id = adr.user_id
where u.login_type_id = 1
and u.langauge_id = 1
and u.enabled = true
and adr.city_id in (1,2,3,4,
我目前正在运行一个查询,如下所示:
Select Name from Location Where Created > (long value of date)
and
Created < (long value of date) and LocationContainer = 'a string'
日期的长值表示从Epoch开始的毫秒数,我们用它来存储日期。
我有一个建立在LocationContainer上的索引,按照这个顺序创建。
我有一个返回130万行的查询,但它也需要大约40秒才能运行。是那么回事吗?既然我要查询的字段都被索引了,
select *
from ws
where ws.id >= X and ws.id <= Y and w.ses = Z
Y-X小于1天,表包含过去3个月的数据。此查询的性能- select * from ws where ws.id =U很好。
我没有关于这个表中记录数量的任何信息。
表在'id‘上有索引,但在'ses’上没有索引。
你觉得这个怎么样?在'ses‘上建立索引是必要的吗?
我目前使用的是mongodb,但我也已经习惯了MySQL。
我在尝试思考,我们可以有一个双字段索引吗?
例如,想象一下这个表:
Firstname | LastName
============+=================
Bob | Bob
Bob | B
John | Bob
一个索引,在这个索引中,我们可以让数据库将First Name和Last Name作为一个整体来实施唯一性(而不必将开销作为第三个字段作为两者的组合,或者作为散列等
所以如果我们输入{ 'firstname: 'bob',