Mysql
 sql >> база данни >  >> RDS >> Mysql

Подобряване на ефективността на MySQL индекса – колони в множество индекси?

Само една бърза забележка, защото този вид неща се виждат отново и отново:JOIN на prism_worlds е ненужен, защото (най-вероятно) нямате нужда от данните от тази таблица. По същество питате базата данни „дайте ми всяко име на светове, за които името е равно на „нещо““. Вместо това използвайте скаларна подзаявка.

Създайте уникален индекс на prism_worlds.world и изпълнете заявката като

SELECT *
FROM prism_data 
WHERE prism_data.world_id = (SELECT w.world_id FROM prism_worlds AS w WHERE w.world = 'DeuxTiersMondes')
LIMIT 1000;

Оптимизаторът ще разбере, че prism_data.world_id е ограничена до една константна стойност. MySQL ще изпълни заявка предварително, за да разбере тази стойност и да я използва през цялата заявка. Вижте EXPLAIN за const -изпълнена подзаявка.

Относно prism_data.x , .y и .z :Може да искате да създадете колона с геометрия и пространствен индекс за това. Ако трябва да се придържате към отделни стойности, може да искате да разделите цялата геометрия на света на воксели с фиксиран размер (представени от едно цяло) и да използвате проста геометрия, за да разберете коя позиция попада в кой воксел.

Моето лично решение би било да не се замислям твърде много относно добавянето на милиони заявки към тази таблица. Индексите ще го направят бавно и голямо. Използвайте задание на cron, за да попълните таблица за отчитане (материализиран изглед), за да генерирате резултатите преди време и да ги използвате, докато задачата cron се появи и ги актуализира отново.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вярно/Невярно срещу 0/1 в MySQL

  2. MySQL Limit LEFT JOIN Подзаявка след присъединяване

  3. MySQL:попълване на празни полета с нули при използване на GROUP BY

  4. Свържете се с базата данни mysql 5.0 с помощта на чист vbscript?

  5. Име на таблица като параметър, използващ подготвен израз на PDO/MySQL