2

私はテーブルでさまざまなブール値フラグを使用しています。パフォーマンスの最適化について少し読んだところ、ブール値フラグの使用を避けるための広範なヒントに出くわしました。

効果的な代替手段は何ですか?いくつかの例をいただければ幸いです。

4

2 に答える 2

4

私はテーブルでさまざまなブール値フラグを使用しています。パフォーマンスの最適化について少し読んだところ、ブール値フラグの使用を避けるための広範なヒントに出くわしました。

ではMySQLBOOLEANは単なるエイリアスですTINYINT(1)

これは、ブール演算が実際には整数演算であることを意味します。

これは、とりわけ、次のようなクエリで次のことを意味します。

SELECT  *
FROM    mytable
WHERE   boolean_flag = 0

のインデックスがboolean_flagあれば、これを使用できます。

SELECT  *
FROM    mytable
WHERE   NOT boolean_flag

インデックスは使用されません。

于 2010-08-19T10:25:09.380 に答える
2

ブールフィールドがたくさんある場合は、ビットを使用できます

お気に入り

4 つのフィールド「true、false、false、true」の代わりに、1 つの数値「9」(2 進数で 1001) を格納します。

于 2010-08-19T10:22:41.990 に答える