try:
optimize.bisect(np.sin, 1, 2)
except Exception as e:
print(e)
# f(a) and f(b) must have different signs
try:
optimize.bisect(np.sin, 1, 7)
except Exception as e:
print(e)
# f(a) and f(b) must have different signs
EXPLAIN SELECT
*
FROM
price
WHERE
date >= '2023-01-01'
-- 結果 (これはkeyがNoneなのでインデックスを使ってない)
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
0 1 SIMPLE price None ALL date None None None 7336473 25.53 Using where
EXPLAIN SELECT
*
FROM
price
WHERE
date >= '2023-12-01'
-- 結果 (これはdateをインデックスとして使っている)
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
0 1 SIMPLE price None range date date 3 None 176076 100.0 Using index condition
さて、上記の上の例でもdateをインデックスとして使って欲しい場合にインデックスヒントを使います。
インデックスヒントの使い方
インデックスヒントを使う場合、特定のインデックスを強制する USE INDEX, 特定のインデックスの利用を防ぐ IGNORE INDEX, USE INDEXよりも強力に指定したインデックスを強制する FORCE INDEX の3種類があります。
使い方は同じで、FROM句のテーブル名の後ろに、 テーブル名 USE INDEX (インデックス名) のように書きます。カッコを忘れないように注意してください。
FORCE IDNEXでやってみます。
EXPLAIN SELECT
*
FROM
price FORCE INDEX(date)
WHERE
date >= '2023-01-01'
-- 結果 (FORCEしたインデックスが使われている)
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
0 1 SIMPLE price None range date date 3 None 176076 100.0 Using index condition