---
# System prepended metadata

title: 2021-03-10 Pair-A v2 定例
tags: [Pair-A v2]

---

# 2021-03-10 Pair-A v2 定例

## 疑問
### 粟田

#### LIMITが遅い理由がなんかバラバラっぽいので、
- 不要な行まで取得するから？
    - WHEREで絞り込んでおくべき。ただ、インデックスがきいていない列で検索したなら、いずれにしても全件スキャンでは？
- LIMIT 1 OFFSET 1000 なら 1001件とるから
- 逆にLIMITを使う場合はどういうふうに使うべきか。ORDER BYと組み合わせれば早そう

#### NULLのテーブル定義もついでに
- 課題の意図をきいてみる
    - 全テーブルからNULLを削除するのか？Issueだけか？
    - どういう回答を想定していたのか

#### エンティティの生成について
DDD輪読会で出た、`task.postpone()`が新しいインスタンスを返すのはどうなのかきいてみたい
更新前のエンティティと別エンティティとして更新する場合は有効かもしれないが、ドメインオブジェクトがドメインオブジェクトを生成するってどうなんだろう？
- 優先度低め

以下のようなテーブルがあって、変更履歴を全て保存しておくようなイメージ
| id | group_id | name | email | password | version |
| --- | --- | --- | --- | --- | --- |
| 2kfa9fdsa  | kdkosao2| awata kyosuke | hoge@example.com | foobar | 1 | 
| rqwf0fkkar  | kdkosao2| awata kyosuke | fuga@example.com | foobar | 2 | 
| mm92f0afka  | kdkosao2| awata kyosuke | fuga@example.com | foobar123 | 3 | 

```typescript=
const user = userRepository.Find('mm92f0afka');
// 変更後のレコードは新規行として追加するので、別エンティティとなる？
// Setterがエンティティを生成してしまっている
const newUser = user.setEmail('foobar@example.com');
userRepository.save(newUser);
```

#### RDBのシャーディング
DBサーバーを分けたとして、どこのサーバーにあるかってどうやって判断する？
- ロードバランサー的な何かに問い合わせをすれば自動的に正しいサーバーにアクセスしてくれるのか？
- 優先度低め

### 玄徳

#### SQLのテストとかって書くものですか？どのように？
- 他のチームの知見
- PrAhaのやりかた

### 永井
- `performance_schema.events_statements_summary_by_digest`とコンソールに出力される値とslowquery.logの値のどれが正しいのか？

- アンチnull派が存在することは理解したが、実務上NULLなしで設計することはできるのか、NULLなしで設計することはあるのか？
###### Tags: `Pair-A v2`