我知道怎么回事
工作及其功能.
我想知道在Postgres中使用这些连接的情况
temp.vue
<v-form ref="entryForm" @submit.prevent="save">
<v-text-field label="Amount" :rules="numberRule"r></v-text-field>
<v-btn type="submit">Save</v-btn>
</v-form>
<script>
export default {
data: () => ({
numberRule: [
v => !!v || 'Field is required',
v => /^\d+$/.test(v) || 'Must be a number',
],
}),
methods: save () {
if (this.$refs.entryForm.validate()){
//other codes
}
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
这里发生的事情是在文本字段本身中键入时,规则会被执行。我只想在提交时执行规则。如何在 vuetify 文本字段中做到这一点?
有时我可以使用强制索引选项在查询上使用特定索引来加快查询速度.
然后经过一段时间后,该表中的数据可能会发生变化.我使用的力索引可能不是该查询的正确索引搜索.
我的问题是
无论如何,建议查询优化器在其计划生成期间使用强制索引作为可能的选项.如果使用强制索引是一个缓慢的计划,那么它可以使用正常的查询计划.
或者否则无论如何都要编辑MySql/PSQL代码以建议Optimiser在其计划生成期间使用强制索引作为可能的选项.
附加信息:我想将我的计划添加到优化器计划列表中(Optimiser已经为查询创建了许多计划).因此,在为查询选择最佳计划时,我希望优化人员也考虑我的计划.如果这种方式可行,那么优化器不需要每次都考虑强制索引.它可以将力指数作为计划生成的可能选项
据我所知,我试图明确提出这个问题.如果有人无法理解您的查询评论.
mysql> desc temp1;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| value | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
mysql> desc temp2;
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| value | text | YES | | NULL | |
+-------+------+------+-----+---------+-------+
Run Code Online (Sandbox Code Playgroud)
255-每行中有一个“ a”字符(在两个表中)
mysql> select * from temp1 limit 1;
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| value |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
mysql> select …Run Code Online (Sandbox Code Playgroud) 这是我的示例查询
Select table1.id
from table1
where table.id in (select table2.id
from table2
where table2.id in (select table3.id
from table3)
)
order by table1.id
limit 100
Run Code Online (Sandbox Code Playgroud)
在检查上述查询的优化器跟踪时。优化器跟踪成本
由于 DUPLICATE-WEEDOUT 成本较低,mysql 对上述查询采取了 DUPLICATE-WEEDOUT 策略。
join_optimization 部分似乎一切都很好。但最后,在检查了 join_execution 部分之后。DUPLICATE-WEEDOUT 通常会创建临时表。但是这里由于堆大小不足以容纳临时表,它继续创建磁盘临时表(converting_tmp_table_to_ondisk)。
由于磁盘临时表,我的查询执行变慢了。
那么这里发生了什么?
优化器跟踪不计算连接优化部分本身的磁盘表成本。如果计算磁盘表成本,它将高于第一次匹配。那么 final_semijoin_strategy 将是 FIRST-MATCH 策略,这样我的查询会更快。
MYSQL 有什么方法可以计算连接优化部分本身的磁盘表成本或针对此特定问题的任何其他解决方法吗?
MYSQ-5.7, INNODB
注意:这是一个非常动态的查询,其中多个条件将根据查询中的请求添加。所以我已经以所有可能的方式优化了查询。最后还是解决了这个磁盘表成本问题。请避免优化查询(如更改查询结构、强制优先匹配策略)。并且为了增加堆大小(我不太确定,在不同的论坛中很多人说它可能会在其他查询中带来不同的问题)
样本表:
+----+-------+-------+-------+-------+-------+---------------+
| id | col1 | col2 | col3 | col4 | col5 | modifiedTime |
+----+-------+-------+-------+-------+-------+---------------+
| 1 | temp1 | temp2 | temp3 | temp4 | temp5 | 1554459626708 |
+----+-------+-------+-------+-------+-------+---------------+
Run Code Online (Sandbox Code Playgroud)
上表有5000万条记录
每列都有索引
例如:我的网站中有两个选项卡。
FirstTab - 我使用以下条件打印上表的计数 [col1 如“value1%”,col2 如“value2%”]
SeocndTab - 我使用以下条件打印上表的计数 [col3 like“value3%”]
由于我有 5000 万条记录,因此按照这些标准进行计数需要很长时间才能得到结果。
注意:我有时会更改记录数据(表中的行)。插入新行。删除不需要的记录。
我需要一个可行的解决方案,而不是查询整个表。例如:就像缓存旧计数一样。这样的事有可能吗?
我有一个复合 PK,我需要在其中更新其 PK 值之一。但是由于一些内部问题,我无法向 PK 列发出更新查询。
所以我正在触发DELETE和INSERT查询。
这DELETE并INSERT是内完成TRANSACTION(READ提交)。
但有时,当两个请求确实更新到同一行时。OnPRIMARY引发关键错误的重复条目。这是随机发生的,我在本地重现此问题时尝试了很多,但找不到根本原因。
注意:由于一些内部限制,我无法尝试以下内容。
请帮我解决这个问题。
更新:
示例表结构:
Table: temp
Create Table: CREATE TABLE `temp` (
`id1` int(11) NOT NULL,
`id2` int(11) NOT NULL,
`id3` int(11) NOT NULL,
`value` int(11) DEFAULT NULL,
PRIMARY KEY (`id1`,`id2`,`id3`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
样本数据:
+-----+-----+-----+-------+
| id1 | id2 | id3 | value | …Run Code Online (Sandbox Code Playgroud) 当文本和二进制大对象数据类型列在InnoDB引擎使用。该字段中存储的值存储在页面外而不存储在页面中(Innodb页面的默认大小为16kb)。
我的问题是1.离页是什么意思?2.从页外获取值时如何访问它?
我需要Contains在列中执行操作。对于包含操作,我们需要在单词前后使用通配符。
例如:个性化
查询 -> like '%sonal%'
因为这种类型的查询不能使用索引。有什么办法可以提高搜索速度。
注意:我使用MySql(InnoDB)和PSQL
下面是我的 firestore 集合结构
我的vue获取数据的方法
fetchResults(){
db.collection('data').onSnapshot((querySnapShot)=>{
let results = [];
querySnapShot.forEach(doc=>{
results.push(doc.data())
})
this.record=results;
})
}
Run Code Online (Sandbox Code Playgroud)
我想要的是在文档中查询group by ID and order by sec_id desc.
我怎么想这样查询?
这样我就会得到按 ID 字段分组的文档。
mysql ×7
database ×6
innodb ×6
postgresql ×4
sql ×3
mysql-5.7 ×2
performance ×2
psql ×2
vue.js ×2
vuetify.js ×2
firebase ×1
vuejs2 ×1